Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I convert a String to Double in Java using a specific locale?

I want to convert some numbers which I got as strings into Doubles, but these numbers are not in US standard locale, but in a different one. How can I do that?

like image 440
Daniel C. Sobral Avatar asked May 20 '09 14:05

Daniel C. Sobral


People also ask

What is the instruction to convert from a string to a double value?

Syntax: Double str1 = new Double(str); Example: Java.

What does double parseDouble do in Java?

parseDouble. Returns a new double initialized to the value represented by the specified String , as performed by the valueOf method of class Double .


1 Answers

Try java.text.NumberFormat. From the Javadocs:

To format a number for a different Locale, specify it in the call to getInstance.

NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH); 

You can also use a NumberFormat to parse numbers:

myNumber = nf.parse(myString); 

parse() returns a Number; so to get a double, you must call myNumber.doubleValue():

    double myNumber = nf.parse(myString).doubleValue(); 

Note that parse() will never return null, so this cannot cause a NullPointerException. Instead, parse throws a checked ParseException if it fails.

Edit: I originally said that there was another way to convert to double: cast the result to Double and use unboxing. I thought that since a general-purpose instance of NumberFormat was being used (per the Javadocs for getInstance), it would always return a Double. But DJClayworth points out that the Javadocs for parse(String, ParsePosition) (which is called by parse(String)) say that a Long is returned if possible. Therefore, casting the result to Double is unsafe and should not be tried!
Thanks, DJClayworth!

like image 169
Michael Myers Avatar answered Sep 26 '22 01:09

Michael Myers