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

5
我正在分析一个案例,其中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


2
我不明白数字3.8880怎么可能被舍入或截断为3.38或3.39。你是指3.88/3.89吗?还是你没有正确地进行测试? - JB Nizet
尝试在命令提示符上运行“java -version”。可能只是JVM的一个错误。 - Aris2World
1个回答

6

谢谢Arnaud,我也在Oracle网站上检查过了,并发现同样的错误报告。请参考Oracle上的错误页面。 - Rohit Batta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接