Convert.ToDecimal

  • VB.NET

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

    Convert.ToDecimal

    Ich habe ein Problem mit der Konvertierung von Text zu Zahlen.

    Normalerweise verwende ich VAL um einen String in Decimal zu wandeln. Da habe ich allerdings bei der Eingabe das "," in enen "." gewandelt.

    VB.NET-Quellcode

    1. Vorb = Val(txtBoh.Text)

    Liefert mir also aus "29.7" 29.7

    Jetzt habe ich aber nicht nut Textboxen sondern ich hole auch Zahlen aus Labels. Dort wird das "," nicht in "." gewandelt.

    VB.NET-Quellcode

    1. Vorb = Val(lbl1_203.Text)

    geht in die Hose weil aus "29,7" 297 wird.

    Geh ich recht in der Annahme, daß ich da unterscheiden muß oder mache ich was falsch?

    OHH GOTT... geht jetzt alles schief!

    VB.NET-Quellcode

    1. Vorb = Convert.ToDecimal(lbl1_203.Text)

    Da wird aus "29,7" 29.7. Klappt aber nicht mit "29.7"



    Danke

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „JLH“ ()

    Wenn man sich die Doku anschaut, unter learn.microsoft.com/en-us/dotn…rt.todecimal?view=net-8.0, dann sieht man dass es noch die Möglichkeit gibt, einen FormatProvider mitzugeben. Damit kannst du dann auch Zahlen aus verschiedenen Cultures nehmen.

    Das könnte man so lösen:

    C#-Quellcode

    1. ​Convert.ToDecimal("2,97", new CultureInfo("DE-de"));
    Quellcode lizensiert unter CC by SA 2.0 (Creative Commons Share-Alike)

    Meine Firma: Procyon Systems

    Selbstständiger Softwareentwickler & IT-Techniker.
    Ich muss reingrätschen. Da liegt anscheinend ein Konzeptfehler vor. Da der Benutzer den Labeltext nicht direkt festlegen kann, wird hier per Code der Labeltext festgelegt. Da wieder eine Zahl rauszupuhlen, ist nicht sinnvoll. Daten gehören in Variablen mit passendem Datentyp. Dass das Label einen entsprechenden Variablenwert darstellt, ist per .ToString("hierGewünschtenAnzeigeformatEingeben") möglich vorgesehen. Aber nicht, dass man die Textdarstellung wieder in eine Zahl umwandelt. Also: Wert der Variable nutzen, nicht den Text eines Labels.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    JLH schrieb:

    Ich werde die Variaeln verwenden
    Eines der Grundprinzipien der OOP:
    Trennung von Daten und GUI!
    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!