String mit "," in Double Wert konvertieren

JaninaSt

Aktives Mitglied
Hallo!

Ich lese aus einer Excel Datei Werte aus, die als String gespeichert sind.
Da das Komma allerdings dort mit einem "," und nicht mit einem "." geschrieben sind, kann ich diese nicht einfach mit

Double.parseDouble(String);

in einen Double Wert umwandeln.

Um nun den "," durch einen "." zu ersetzen verwende ich folgende Methode:

DecimalFormat format = new DecimalFormat();
format.parse(a);

Dadurch erhalte ich zwar statt dem "," wie gewünscht einen ".", jedoch ist der Wert vom Typ Number.

Wie bekomme ich nun aus den Typ Number einen Typ Double hin?

Oder hat jemand einen besseren Vorschlag um mein Problem zu lösen und am Schluss einen Double Wert erhalte?

Danke!
 
Hallo!

Ich lese aus einer Excel Datei Werte aus, die als String gespeichert sind.
Da das Komma allerdings dort mit einem "," und nicht mit einem "." geschrieben sind, kann ich diese nicht einfach mit

Double.parseDouble(String);

in einen Double Wert umwandeln?

Versuchs doch mal? (Kleiner Tipp, die Parsing Methoden nutzen Locales. Ist das korrekte gesetzt funktionierts).

Um nun den "," durch einen "." zu ersetzen verwende ich folgende Methode:

DecimalFormat format = new DecimalFormat();
format.parse(a);

Dadurch erhalte ich zwar statt dem "," wie gewünscht einen ".", jedoch ist der Wert vom Typ Number.

Wie bekomme ich nun aus den Typ Number einen Typ Double hin?

Oder hat jemand einen besseren Vorschlag um mein Problem zu lösen und am Schluss einen Double Wert erhalte?

Danke!

Das ist ganz einfach, da die Klasse [JAPI]java.lang.Number[/JAPI] Methoden hat wie z.B.
Java:
Double double =  number.doubleValue()
 
Zuletzt bearbeitet von einem Moderator:
Hm sollte mit dem passenden Locale eigentlich gehen. Muss ich selber nochmal nachschauen.

Gewöhn dir nur wirklich an in die API zu schauen. Da hättest du die doubleValue, intValue ect direkt gesehen.
 
Glaub das Problem ist eben, dass das nur geht wenn ein "." vorkommt, aber nicht wenn das Komma als "," dargestellt wird, so wies bei mir im Excel ist.
 
Zur Not die Klasse DecimalFormat nutzen, da kannst du das Eingabeformat frei definieren.
Und du hast Recht, parseDouble erwartet einen Punkt, steht auch so in der API-Doc.
parseDouble hat gesagt.:
Returns a new double initialized to the value represented by the specified String, as performed by the valueOf method of class Double.
valueOf hat gesagt.:
To interpret localized string representations of a floating-point value, use subclasses of NumberFormat.
 
Zuletzt bearbeitet:
Ja stimmt, sry hatte auch DecimalFormat im Kopf, da man dort das Locale explizit angeben kann, und damit auch festlegt wie der Decimal Delimiter interpretiert wird.
 
Wieso macht ihr das alle so kompliziert? 😵 😉 😀 :lol:

Ich hätte da einfach String.replace(",", ".") genommen. Dann kannst du ganz relaxed Parsen 😛

mfg
BH16
 

Zurück
Oben