3

让我们有一个简单的测试代码:

public static void main(String ... arg)
{
    double d = 4000.0;
    DecimalFormat df = new DecimalFormat("#,###.##");
    System.out.println(df.format(d));
}

在 Oracle/SUN 中,java 输出为(带空格):

4 000

但是在IBM java中我得到了:

4,000

我的爪哇:

Java 版本“1.7.0_51”Java(TM) SE 运行时环境(构建 1.7.0_51-b13)Java HotSpot(TM) 64 位服务器 VM(构建 24.51-b03,混合模式)

IBM Java:

java -version java version "1.6.0" Java(TM) SE Runtime Environment (build pap6460_26sr7ifix-20131203_01(SR7+IX90131+IV52621)) IBM J9 VM (build 2.6, JRE 1.6.0 AIX ppc64-64 Compressed References 20131011_170248 (JIT)已启用,已启用 AOT)J9VM - R26_Java626_SR7_20131011_1221_B170248 JIT - r11.b05_20131003_47443 GC - R26_Java626_SR7_20131011_1221_B170248_CMPRSS J9CL - 20131011_17014)

任何人都知道这是为什么?是因为1.6/1.7的区别吗?或者可能是它的语言环境问题,可能不是。

4

1 回答 1

0

好的,我在这里找到了可能的解决方案,没有为 DecimalFormat 分组分隔符

它是如此简单:)

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
DecimalFormat df = new DecimalFormat("#,###.##");
df.setDecimalFormatSymbols(symbols);

显然 ibm 和 oracle 使用不同的默认组分隔符。不知道为什么

于 2014-10-28T11:52:24.837 回答