使用逗号将字符串值转换为具有正确语法环境的Decimal

时间:2015-02-16 15:39:46

标签: java

我正在尝试从十进制字符串值创建Double对象,其中逗号是浮动分隔符。

将语言环境参数传递给vm:

-Duser.country=BR
-Duser.language=PT


String value = "500,21";        
Double dob = new Double(value);

获得例外:

  

java.lang.NumberFormatException:对于输入字符串:“500,21”at   sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)     在java.lang.Double.valueOf(Double.java:475)at   java.lang.Double中。(Double.java:567)

2 个答案:

答案 0 :(得分:1)

您可以尝试使用本地化的NumberFormat

String value = "500,21";
// replace the hard-coded Locale definition with your arguments, or
// Locale.getDefault(), etc.
NumberFormat nf = NumberFormat.getInstance(new Locale("pt", "BR"));
try {
    Double d = nf.parse(value).doubleValue();
    System.out.println(d);
}
catch (ParseException pe) {
    // TODO
}

<强>输出

500.21

答案 1 :(得分:0)

看起来new Double(value)没有考虑语言环境设置。

实现最终调用此方法here,它只是在寻找“。”。

设置区域设置,您可以使用:

NumberFormat.getInstance().parse(value).doubleValue()

Here也是类似的讨论。