2017-06-13 99 views
4

直到最近,我的代码在我的开发机器以及部署服务器上工作正常。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位),但没有区别。 还更改了十进制符号和数字分组符号的区域设置,但仍然是同样的问题。

任何人有关于如何解决这个问题的想法?

+0

我查一下我所得到的...只是片刻 – ItamarG3

+0

好吧,也许这是一个Java 7问题。 java 9(早期访问)没有问题...我会尽快与java 7进行检查 – ItamarG3

+1

System.out.println(Locale.getDefault(Locale.Category.FORMAT))的输出是什么? – assylias

回答

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(以点)

4

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

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