DecimalFormat在不同的机器上产生两种不同的结果

时间:2016-06-06 07:28:23

标签: java numbers number-formatting bigdecimal decimalformat

我正在分析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

On Machine 2的结果是:3.38

1 个答案:

答案 0 :(得分:6)

JDK7在DecimalFormat上引入了一个错误。 有关详细信息,请参阅此问题:Is inconsistency in rounding between Java 7 and Java 8 a bug?