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)
直到最近,我的代码在我的开发机器和部署服务器上都运行良好。
突然间,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)