windows 更新后 DecimalFormat 无法正常工作

DecimalFormat not working properly after windows update

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

突然间,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 位)但没有任何区别。 还更改了 Decimal Symbol 和 Digit Grouping Symbol 的区域设置,但仍然是同样的问题。

有人知道如何解决这个问题吗?

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

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

这可能是区域设置问题 - 您当前的代码使用系统的默认区域设置,这在 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 (with a comma)
22.44 (with a dot)