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?