我正在分析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
答案 0 :(得分:6)
JDK7在DecimalFormat
上引入了一个错误。
有关详细信息,请参阅此问题:Is inconsistency in rounding between Java 7 and Java 8 a bug?