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))
    {
      // ...
    }
    

Anmelden zum Antworten