4

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

现在出乎意料的是,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

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

有人对如何解决这个问题有想法吗?

4

2 回答 2

4

这将是您的系统区域设置,不同的国家使用不同的字符作为小数点和千位分隔符。

您可以设置十进制格式的语言环境以覆盖您的系统默认值。或者您可以更改系统默认值。

于 2017-06-13T07:32:47.593 回答
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(带点)

于 2017-06-13T07:48:13.683 回答