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

标签 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

在机器 2 上的结果是:3.38

最佳答案

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

关于java - DecimalFormat 在不同的机器上产生两种不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37651769/

相关文章:

java - 使用 java 在 ejabberd 中进行外部身份验证

java - Jackson - 将属性序列化/反序列化为 JSON 值

java - 在数字中找到零

hex - RFID算法获取卡号

java - 在通过 Ant 进行 Junit 测试期间无法在 Jar 中找到属性文件

java - ""和 ""之间有什么区别,我如何根据字符测试前者?

string - 尝试用 VBA 代码编写(小数)的幂

sorting - Xslt 排序数字

c++ - 如何将小数点分隔符设置为逗号?

java - NumberFormat Java 的奇怪行为