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!
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…