Berechnungsprogramm erstellen....

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Berechnungsprogramm erstellen....

    Hallo,

    ich will mit Hilfe von VB in der Forms Anwendung ein Berechnungstool erstellen. Dazu verwende ich zur Eingabe von Werten und zur Anzeige der Ergebnisse in der Regel "TextBoxen".
    Zur Berechnung im Programm wandel ich die eingegebene Zahl in ein Double - Format (cDbl) um, damit ich damit rechnen kann (s. Beispiel unten)
    Funktionieren tut das, natürlich kann das jedoch sehr unübersichtlich werden, je nach Formellänge....das wäre aber "egal". Gestartet wird die Berechnung beim "TextChange-Event".

    Ist das aber generell der richtige Weg um Berechnungen zu machen, oder wie würdet ihr das machen?


    VB.NET-Quellcode

    1. tbErgebnisMaxAuslegung.Text = Math.Round(CDbl(CDbl(tbErgebnisMaxAuslegung.Text) + (CDbl(tbErgebnisMaxAuslegung.Text) * CDbl(tbSicherheits.Text / CDbl(100.0)))), 2)


    ~blaze~: Thema verschoben

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „~blaze~“ ()

    Hi
    normal würde man Double.TryParse statt CDbl verwenden. Das hat den Vorteil, dass der Rückgabewert angibt, ob der Parse-Vorgang erfolgreich war:

    VB.NET-Quellcode

    1. Dim result As Double
    2. If Not Double.TryParse(textBox.Text, result) Then
    3. MessageBox.Show("Eingabe in textBox ungültig.")
    4. Return
    5. End If
    6. 'erfolgreich, result enthält das Ergebnis des Parse-Vorgangs

    Außerdem wäre meine Empfehlung, CDbl nur für die Konvertierung primitiver Datentypen (das sind Byte, SByte, UShort, Short, UInteger, Integer, ULong, Long, Single und Double und zusätzlich noch Boolean und Char, aber zu denen kann man Doubles ja idR. nicht sinnvoll konvertieren, ich weiß auch gar nicht ob Double to Boolean akzeptiert wird) zu empfehlen und sonst auf Double.Parse bzw. Double.TryParse zurückzugreifen. Ich würde das zumindest auf keinen Fall bei Strings tun.

    CDbl(100.0) solltest du als 100.0 darstellen. Es gibt Suffixe für die einzelnen Typen, so ist das bspw. für Double keiner bzw. ! oder #, glaub' ich, aber ich würde es einfach weglassen.
    Eine Empfehlung für Geldbeträge: Verwende in diesem Fall unbedingt Decimal. Beim Rechnen mit Double kommt es zu Rundungsfehler, die, je länger die Rechnung, umso mehr zur Geltung kommen.

    Um einen Betrag wieder als String darzustellen, sollte man ToString aufrufen. Dort kannst du auch das Format direkt angeben und kannst auf Double.Round verzichten.

    VB.NET-Quellcode

    1. Dim x As Double = 123.4567
    2. textBox.Text = x.ToString("0.00")


    Viele Grüße
    ~blaze~

    Alex0815 schrieb:

    VB.NET-Quellcode

    1. tbErgebnisMaxAuslegung.Text = Math.Round(CDbl(CDbl(tbErgebnisMaxAuslegung.Text) + (CDbl(tbErgebnisMaxAuslegung.Text) * CDbl(tbSicherheits.Text / CDbl(100.0)))), 2)
    Diese Herangehensweise ist ein NoGo.
    Trenne Daten und GUI.
    Gerechnet wird mit Zahlen, Controls dienen dazu, Daten anzuzeigen und zu editieren.
    Konvertiere alle Deine Test-Werte einzeln in Double, dann echnest Du mit den Doubles und zeigst das Ergebnis an.
    Wenn Du zu Konvertieren eine separate Prozedur machst, wird das ganze auch schön übersichtlich.
    Und
    Nimm ggf. ein NumericUpDownControl.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!