直到最近,我的代码在我的开发机器和部署服务器上运行良好。
现在突然之间, 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位),但没有任何区别。 还更改了十进制符号和数字分组符号的区域设置,但仍然存在同样的问题。
有关于如何解决此问题的想法?
答案 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(带点)