DecimalFormat 在不同的机器上产生两种不同的结果
DecimalFormat results in two different results on different machines
我正在分析 DecimalFormat
舍入一个 BigDecimal
数字并且在其他机器上被截断的情况。
我已经验证了两台机器上的所有配置(我假设它们都是相同的)。
我发现的唯一区别是 JDK 版本。
机器 1 运行 在 JDK1.6 上。但是,我在机器 1 上尝试过 JDK1.7,它的工作原理与 JDK1.6.
相同
机器 2 运行 JDK1.7
以下是代码片段:
DecimalFormat decimalFormat = new DecimalFormat("#,###.00");
BigDecimal anObject = new BigDecimal("3.8880");
String str = decimalFormat.format(((Number)anObject).doubleValue());
System.out.println(str);
在机器 1 上的结果是:3.39
在机器 2 上的结果是:3.38
DecimalFormat
上的 JDK7 中引入了一个错误。
有关详细信息,请参阅此问题:Is inconsistency in rounding between Java 7 and Java 8 a bug?
我正在分析 DecimalFormat
舍入一个 BigDecimal
数字并且在其他机器上被截断的情况。
我已经验证了两台机器上的所有配置(我假设它们都是相同的)。 我发现的唯一区别是 JDK 版本。
机器 1 运行 在 JDK1.6 上。但是,我在机器 1 上尝试过 JDK1.7,它的工作原理与 JDK1.6.
相同机器 2 运行 JDK1.7
以下是代码片段:
DecimalFormat decimalFormat = new DecimalFormat("#,###.00");
BigDecimal anObject = new BigDecimal("3.8880");
String str = decimalFormat.format(((Number)anObject).doubleValue());
System.out.println(str);
在机器 1 上的结果是:3.39
在机器 2 上的结果是:3.38
DecimalFormat
上的 JDK7 中引入了一个错误。
有关详细信息,请参阅此问题:Is inconsistency in rounding between Java 7 and Java 8 a bug?