DecimalFormat在Windows更新后无法正常工作
问题描述:
直到最近,我的代码在我的开发机器以及部署服务器上工作正常。DecimalFormat在Windows更新后无法正常工作
现在出了蓝色的DecimalFormat的不能按预期工作,我敢肯定,是窗口10创作者更新后。
我的代码是:
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位) 尝试更改m y jdk到1.7.0_80u(32位),但没有区别。 还更改了十进制符号和数字分组符号的区域设置,但仍然是同样的问题。
任何人有关于如何解决这个问题的想法?
答
这可能是一个语言环境的问题 - 你目前的代码使用的系统,该系统可以在不同的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(以点)
答
这将是您的系统区域设置,不同的国家使用不同的字符为小数点和千位分隔符。
您可以设置十进制格式的语言环境以覆盖您的系统默认值。或者你可以改变你的系统默认值。
我查一下我所得到的...只是片刻 – ItamarG3
好吧,也许这是一个Java 7问题。 java 9(早期访问)没有问题...我会尽快与java 7进行检查 – ItamarG3
System.out.println(Locale.getDefault(Locale.Category.FORMAT))的输出是什么? – assylias