# String mit "," in Double Wert konvertieren



## JaninaSt (23. Apr 2012)

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!


----------



## Gast2 (23. Apr 2012)

JaninaSt hat gesagt.:


> 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
> ...



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



JaninaSt hat gesagt.:


> Um nun den "," durch einen "." zu ersetzen verwende ich folgende Methode:
> 
> DecimalFormat format = new DecimalFormat();
> format.parse(a);
> ...



Das ist ganz einfach, da die Klasse [JAPI]java.lang.Number[/JAPI] Methoden hat wie z.B. 
	
	
	
	





```
Double double =  number.doubleValue()
```


----------



## JaninaSt (23. Apr 2012)

Ich habs versucht und es funktionierte nicht, darum frag ich ja 

Aber dein zweiter Tipp funktioniert, danke schön!


----------



## Gast2 (23. Apr 2012)

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.


----------



## JaninaSt (23. Apr 2012)

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.


----------



## HoaX (23. Apr 2012)

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.


----------



## Gast2 (23. Apr 2012)

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.


----------



## Blackhole16 (24. Apr 2012)

Wieso macht ihr das alle so kompliziert?    :lol:

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

mfg
BH16


----------

