String to Double Fehler String to Double Fehler
Danke Danke:  0
Ergebnis 1 bis 10 von 10
  1. 09.01.2012, 18:55
    #1
    Hallo Leute,
    ich habe einen Bug in meiner App, und zwar ich habe eine TextBox mit einem InputScope "Digits" , somit nur Zahlen und ein Punkt für die Kommazahlen. Wenn ich jetzt den Text auslese und in eine Double-Variable packe, gibt es einen Fehler. Wenn ich 25.1 eintippe steht in meiner Variablen 251, wenn ich 520.625 eintippe, steht in der Variablen 520625. Sprich das Komma aus der TextBox wird gar nicht berücksichtigt.

    So lese ich aus und parse:
    Code:
    Zahl= Convert.ToDouble(TextBox1.Text);
    Mit ganzzahligen Zahlen funktioniert alles ohne Probleme.
    Was wird der Fehler sein?

    -Schledi
    0
     

  2. 10.01.2012, 06:34
    #2
    Du berücksichtigst nicht, dass Windows Phone per Default die eingestellte System-Culture berücksichtigt. Dadurch ist dann bei Einstellung Deutsch wahrscheinlich das Komma und nicht der Punkt das Dezimaltrennzeichen. Man kann aber z.B. bei Double.Parse in einer Überladung eine bestimmte Culture mitgeben (z.B. en-US) und dann klappts auch mit der Dezimalen.
    0
     

  3. Hallo,
    so einfach es sich anhört, es ist doch recht aufwendig alles abzudecken.
    Beispiel:
    - Systemeinstellung deutsch: 123.456,789
    - Systemeinstellung amerikanisch: 123,456.789
    diese Zahlen würde parse erkennen

    - Bildschirmtastatur für simple Zahleneingabe ist aber nur für amerikanische Eingaben geeignet 123456.789, das Komma fehlt!
    - hat aber jemand in Deutschland ein Handy mit Tastatur gibt er die Zahl in deutscher Version ein 123456,789 oder 123.456,789

    Nun wird es kompliziert. Was bedeutet 456.789 oder auch 456,789?
    4 Hundert... oder 4 Hunderttausend...
    Und geht der Spaß mit anderen Sprachen noch weiter?
    Für die meisten Fälle wirst du mit dem Tipp von StevieBallz ganz gut fahren, aber es ist eben lange nicht alles abgedeckt.

    Amerikanische Programme stürzen deswegen mit deutschen Systemeinstellungen oft ab, weil die das nie testen

    Grüße
    Hanno
    0
     

  4. 10.01.2012, 15:50
    #4
    Stimmt es liegt an der Systemeinstellung. Wenn wenn ich bei meiner Konfiguration (Deutsch) ein Komma einfüge läuft es, wenn ein Punkt dahinkommt stürzt die App ab. Mit der amerikanischen Konfiguration ist es genau anders herum! Gut zu wissen


    Danke euch

    -Schledi
    0
     

  5. kannst du nicht einfach über CulturInfo.NumberFormat das Problem umschiffen?
    0
     

  6. nicht os einfach, weil es sich um eine Benutzereingabe handelt. Und wer weis schon was der tut
    0
     

  7. Versuche doch mit Tryparse das ganze mit Systemeinstellungen zu parsen. Falls das false zurückgibt einfach nochmal im englischen Format probieren.

    Edit: Etwa so

    Code:
           public static bool TryParseCulture(string str, out double dbl)
            {
                if (double.TryParse(str, out dbl))
                    return true;
                else
                {
                    NumberStyles style = NumberStyles.Number;
                    CultureInfo info = CultureInfo.CreateSpecificCulture("en-US");
                    return double.TryParse(str, style, info, out dbl);
                }
            }
    0
     

  8. Oder regexp?
    Mit der kostenlosen PocketPC.ch App von meinem LG-E900 aus geschrieben.
    0
     

  9. ^[\-]{0,1}[0-9]+[\.\,]{0,1}[0-9]*$
    müsste dann der passende Ausdruck sein. Die double.TryParse Methode finde ich allerdings besser geeignet. Sie ist genau für sowas gemacht
    0
     

  10. Danke für das Beispiel mit dem Code, hatte beim schreiben gerade mal wieder kein Visual Studio um das auszuprobieren. Bei Benutzereingaben ist das Verwenden der aktuellen Systemeinstellung meistens eine gute Idee. Das Problem ist, dass die meisten nicht daran denken wenn sie Config-Files auslesen und dann geht es in anderen Ländern nicht.

    Gerade bei Systemsettings schreibe ich deshalb meisten mit dem Punkt als Dezimaltrennzeichen und parse das ganze dann mit der InvariantCulture.
    0
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 07.07.2011, 12:55
  2. iTunes für Android - Double Twist
    Von metter im Forum Android Apps
    Antworten: 2
    Letzter Beitrag: 11.02.2011, 02:00
  3. BUG bei Bluetooth DUN? Kein CONNECT-String
    Von Vo.IP im Forum HTC HD2 Kommunikation
    Antworten: 1
    Letzter Beitrag: 04.01.2010, 14:44

Besucher haben diese Seite mit folgenden Suchbegriffen gefunden:

windows phone string to double

windows phone parse double culture

wp7 inputscope culture

c# zahlenformat punkt statt komma -excel

String Double Fehlermeldung

wp7 inputscope digits culture

wp7 punkt komma

wp7 digits punkt statt komma

wp7 double to string comma

wp7 inputscope double

nur integer werte eingeben windows phone

string converttodouble komma

windows phone parse double without culture

konvertieren string mit komma double

wp7 parse problem

windows phone double punkt komma

wp7 textblock ohne komma

tryparse double komma deutsch englisch

win phone 8 format string to double

expression cultureinfo string to System.double

c wp7 inputscope culture

fehler meldung system.double string

c# convert.todouble from string deutsches zahlenformat mit komma

system.double fehlermeldung

c# format string to number with commas

Stichworte