Anzeige:
Ergebnis 1 bis 5 von 5

Thema: String to Double (landesspezifisch)

  1. #1
    Registrierter Benutzer
    Registriert seit
    01.09.2005
    Beiträge
    8

    String to Double (landesspezifisch)

    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

  2. #2
    Registrierter Benutzer Avatar von sixfriends
    Registriert seit
    26.03.2003
    Ort
    /home/sixfriends
    Beiträge
    285
    Wenn dein Problem nur , ist:
    Code:
    string = string.replace(',', '.');
    .
    Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten.

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Siehe Methode parse() von
    java.text.NumberFormat

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer
    Registriert seit
    01.09.2005
    Beiträge
    8

    Meine Lösung

    Ich habe es jetzt so gelöst:

    Code:
    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

    Code:
    ausgabedouble =Double.parseDouble(eingabestring.replace(trennzeichen,"."))
    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

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •