Double::Parse
-
Moin
Ich schreibe zurzeit ein Programm in C++ und das Formular ist in .NET.
In dem Formular gibt es mehrer Eingabefelder wo Zahlen eingegeben werden sollen. Diese Zahlen möchte ich dann mit Double::Parse in eine double Variable umwandeln. Das funktioniert auch bei ganzen Zahlen, doch bei einer Eingabe wie "0.4" hat meine double-Variable danach den Wert 4.00000, und sogar bei 0.0891 kommt 891.0000 raus. Weiß jemand woran das liegen könnte? Muss man bei der Eingabe irgendetwas beachten?Vielen Dank
-
Bist du dir sicher das die Eingabe "0.4" ist und nicht vielleicht "0,4"? Du musst beim Parsen die richtige Locale angeben sonst können solche Fehler passieren.
-
Zeig mal etwas Code, für mich sieht das nach ner komischen Formatierung deinerseits aus.
-
Sprachunabhängig parsen:
NumberFormatInfo nfi=new NumberFormatInfo(); nfi.NumberDecimalSeparator="."; // Dezimaltrennzeichen nfi.NumberGroupSeparator=""; // Kein Tausender-Trenner, etc. // ... double d=Double.Parse("0.41",nfi);
-
Das geht auch einfacher:
double d = Double.Parse("0.41", CultureInfo.InvariantCulture);
bzw. noch besser mittels TryParse (damit keine Exception geworfen werden könnte):
double d = 0; if (Double.TryParse("0.41", NumberStyles.Float, CultureInfo.InvariantCulture, out d)) { // ... }