Windows更新后DecimalFormat无法正常工作

时间:2017-06-13 07:14:30

标签: java java-7 decimalformat jdk1.7

直到最近,我的代码在我的开发机器和部署服务器上运行良好。

现在突然之间, DecimalFormat 无法按预期工作,我很确定它是在 Windows 10 Creators Update 之后。

我的代码是:

double x = 22.44;
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(x));

输出:22,44 而不是22.44

如果我将其更改为:

double x = 22.44;
DecimalFormat df = new DecimalFormat("0,00");
System.out.println(df.format(x));

输出为:0.22

我正在使用netbeans 7.4和jdk 1.7.0_79u(64位) 尝试将我的jdk更改为1.7.0_80u(32位),但没有任何区别。 还更改了十进制符号和数字分组符号的区域设置,但仍然存在同样的问题。

有关于如何解决此问题的想法?

2 个答案:

答案 0 :(得分:4)

这将是您的系统区域设置,不同的国家/地区使用了十进制和千位分隔符的不同字符。

您可以使用十进制格式设置区域设置以覆盖系统默认值。或者您可以更改系统默认值。

答案 1 :(得分:4)

这可能是一个区域设置问题 - 您当前的代码使用系统的默认区域设置,在Java 7和Java 8中可能会有不同的区域设置。如果您想使用特定的区域设置,您可以使用:

double x = 22.44;
DecimalFormat df = new DecimalFormat("0.00", new DecimalFormatSymbols(Locale.FRANCE));
System.out.println(df.format(x));

df = new DecimalFormat("0.00", new DecimalFormatSymbols(Locale.UK));
System.out.println(df.format(x));

输出:

  22,44(逗号)
  22.44(带点)