如何将Java中的“1234.56”解析为Double?

如何将Java中的“1234.56”解析为Double?,java,double,locale,Java,Double,Locale,我在Java中解析1234.56时遇到问题,建议在数字格式中使用法语区域设置,但解析结果不正确。以下是我所拥有的: NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); Number number = format.parse("1,234.56"); System.out.println(number.doubleValue()); // Should get 1234.56, got 1.234 instead Numb

我在Java中解析1234.56时遇到问题,建议在数字格式中使用法语区域设置,但解析结果不正确。以下是我所拥有的:

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("1,234.56");
System.out.println(number.doubleValue()); // Should get 1234.56, got 1.234 instead
Number number = format.parse("1,234,567.89");
System.out.println(number.doubleValue());  // Should get 1234567.89
1234.56不是法语符号。类似于1.234,56的值是


将您的语言环境更改为locale.ENGLISH、locale.US或类似的

您可以使用字符串替换和替换,例如


这很混乱,但您不需要求解语言环境。

法语语言环境的小数点用逗号表示。您需要使用美国地区:

NumberFormat format = NumberFormat.getInstance(Locale.US);
或Locale.ENGLISH(基于语言):

NumberFormat format = NumberFormat.getInstance(Locale.ENGLISH);

正如你所知,在法国,小数点用逗号表示,而不是句点。这不是你想要的。盲目地用一个符号替换另一个符号总是个坏主意。
NumberFormat format = NumberFormat.getInstance(Locale.ENGLISH);