string to double



  • Hi

    ich will einen string in einen double konvertieren
    string s = "3.33";
    double d = Double.Parse(s); // Ergibt 333
    d = Convert.ToDouble(s); // Ergibt 333
    d = Convert.ToDouble("3,33"); // Ergibt 3.33 aber ich will den Punkt als Trenner!

    Wie krieg ich den richtigen Wert, auch wenn der Punkt als Trenner benutzt wird im String?????? 😞



  • Vielleicht nur ein Denkanstoß, aber wie wärs den String erst in 2 Teile aufzuteilen (eben nach dem Punkt trennen, der ja das Komma bei uns im Deutschen sein soll) diese beiden Teilstrings kannste dann ja beliebig bearbeiten.

    Gruß

    Markus Seidl



  • Angren Aldaron schrieb:

    Vielleicht nur ein Denkanstoß, aber wie wärs den String erst in 2 Teile aufzuteilen (eben nach dem Punkt trennen, der ja das Komma bei uns im Deutschen sein soll) diese beiden Teilstrings kannste dann ja beliebig bearbeiten.

    Gruß

    Markus Seidl

    im .net framwork gibt es über 40.000 klassen. da wird ja wohl eine dabei sein die dsa bereits kann.



  • Bestimmt, jetzt dreh ich das aber mal um, das Problem ist so geläufig, dass es jemand schon gelöst hat, Google wäre was. Und wenn das nicht funzt, kann man sich doch derweil so aushelfen, oder nicht?, sonst bleibt das ganze Projekt ja stehen.

    Ich habe zum Beispiel lange Zeit, die Uhrzeit manuell ausgerechnet. Also die Sekunden auf Minuten und Stunden hochgerechnet, die Werte wurden als INT64 gespeichert. Und für das String ausgabeformat musste ich immer schauen ob der Wert kleiner 9 ist, damit ich davor nochmal einen 0 hängen konnte. Damit das Zeitformat hh🇲🇲ss zustande kommt. Heute nimm ich die Sekunden direkt und übergib sie einfach mal einem TimeSpan Objekt.

    (new TimeSpan(0,0, e.SecondsToComplete)).ToString()
    

    Das gebe ich auf einem Label aus. Bestimmt gibts für dein Problem auch eine kurze Lösung, aber damits nicht stehen bleibt, kannste dir doch so behelfen 😉

    Gruß

    Markus Seidl



  • sowasist schrieb:

    im .net framwork gibt es über 40.000 klassen. da wird ja wohl eine dabei sein die dsa bereits kann.

    Zeige mir bitte diese Quelle, welche Deine Aussage unterstützt.

    ansonsten kannst Du es ja mal so versuchen:

    string s = "13.3";
    s = s.Replace(",", ".");
    double d = double.Parse(s, System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"));
    MessageBox.Show(d.ToString());
    System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
    


  • Zum Schluß kam ja der richtige Ansatz, fands schon lustig was für abenteuerliche Ideen das waren. Es ist einfach dadurch verursacht das in Deutschland das Komma verwendet wird, und im englichsprachigen Raum der Punkt als Dezimaltrennzeichen. Für Tausendertrennzeichen ists genau andersrum wieder 🙂 Einfach die richtige Cultur einstellen und schon gehts.


Anmelden zum Antworten