Windows Forms Taschenrechner: Komma-Problem?
Hallo ich erstelle derzeit einen Taschenrechner in Windows Forms.
Ich bin eigentlich fertig mit dem Taschenrechner, bin aber leider jetzt am Schluss auf ein Problem gestoßen, was ich nicht gelöst bekomme:
Wenn ich als Aufgabe 12,4 + 3 eingebe, kommt 127 raus. (heißt, er wertet das Komma falsch bzw. gar nicht aus) Ich verstehe aber einfach nicht warum. Es hat die ganze Zeit funktioniert und plötzlich nicht mehr. Vielleicht habe ich ja unbewusst etwas geändert.
Hier der Code =
hatte gestern schonmal gefragt aber hier jetzt der vollständige code per link
1 Antwort
Ich hab mir jetzt nicht den gesamten Code angeguckt, aber was mir aufgefallen ist, ist dass du in der Funktion "ParseExpression" die Zahlen mit "InvariantCulture" parst. Das versucht, Zahlen standardmäßig mit einem Punkt als Dezimaltrennzeichen zu parsen.
Wenn du die Culture weglässt, müsste es eigentlich automatisch mit der CurrentCulture geparst werden. Probier mal, ob eins der drei Dinge funktioniert:
Double.TryParse(part, num)
Double.TryParse(part, NumberStyles.Any, CultureInfo.CurrentCulture, num)
Double.TryParse(part, NumberStyles.Any, CultureInfo.GetCultureInfo("de-DE"), num)
Dann musst du dir am Besten mal an der Stelle ausgeben lassen, was für ein String jeweils als part ankommt. Du hast ja die eine oder andere Stelle im Code, wo du schon mit den CultureInfos rumprobierst oder Kommas mit Punkten austauschst. Kann vielleicht auch sein, dass du irgendwo versehentlich das Komma einfach rauslöschst.
Wenn du daraus keine internationale App machen willst, wäre es eigentlich am Besten, wenn du alles, was mit Globalization und Cultures zu tun hat, erstmal weglässt, weil .NET standardmäßig mit der CurrentCulture arbeitet, also mit dem, was im Betriebssystem eingestellt ist.
Hallo
erstmal danke, hat leider aber alles nicht funktioniert