PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : String to Double (landesspezifisch)



WiWil
15-09-2005, 08:35
Hallo zusammen,

ich benutze in einem Programm zum Einlesen von Double-Werten die Funktion parseDouble. Das funktioniert problemlos, jedoch habe ich das Problem, dass wir in Deutschland im Allgemeinen ein Komma und nicht den Punkt benutzen.
Also wollte ich aus der NumberFormat Klasse parse benutzen.
Hierbei funktioniert zwar die Eingabe mit dem Komma, jedoch habe ich hier das Problem, dass bei einer ungültigen Eingabe z.B. 6m54 durch einen Tippfehler keine Exception geworfen wird, sondern nur die Zahl bis zum Fehler, hier also 6 umgewandelt wird. Dies ist jedoch in meinem Fall sehr unerwünscht.
Kennt jemad hierfür eine einfache Lösung? Ich könnte auch das Ergebnis rückumwandeln und mit dem Eingabestring vergleichen, aber vielleicht gibt es ja eine elegantere Lösung.
Danke für eure Hilfe!

Gruß
WiWil

sixfriends
15-09-2005, 14:17
Wenn dein Problem nur , ist:

string = string.replace(',', '.');

anda_skoa
15-09-2005, 15:33
Siehe Methode parse() von
java.text.NumberFormat

Ciao,
_

WiWil
15-09-2005, 16:12
Ich habe es jetzt so gelöst:


private String trennzeichen=(""+new java.text.DecimalFormat(".").format(0)).substring(1);

so bekomme ich das landesspezifische Dezimal-Trennzeichen heraus. Gibt vielleicht elegantere Lösungen, aber es funktioniert.

Dann kann ich per


ausgabedouble =Double.parseDouble(eingabestring.replace(trennzei chen,"."))

meinen String umwandeln.

So bekomme ich bei falscher Eingabe eine NumberFormatException und kann trotzdem in Deutschland mit dem Komma arbeiten.

Aber vielen Dank für eure Hilfe

Gruß
WiWil

anda_skoa
15-09-2005, 18:37
Und DecimalFormat.parse funktioniert nicht?

Übrigens werden Formatter nicht mit new erzeugt, sondern über getInstance()

Das stellt sicher, daß sie entsprechend der Locale konfiguriert ist

Ciao,
_