Different Rounding Results in Java 6 and Java 8
本问题已经有最佳答案,请猛点这里访问。
我正在重写一个旧Java 6程序,用于编写Java 8中的一些科学计算,并且在这种情况下,我在舍入操作中得到不同的结果。
Java 6是将EDCOX1 0的输入(如EDCOX1)1的一个输入舍入,但是Java 8使其成为
例如:
上面的代码对于不同的Java版本有不同的行为。
如果有人能对这个问题有所了解,那就太好了。
我想你在EDOCX1 0中发现了一个已知的bug,它后来被固定在Java 7中。这就解释了
错误信息:
http://bugs.java.com/bugdatabase/view_bug.do?错误ID=6430675
@olivercharlesworth提供的更多信息和漂亮的解释可以在本文中找到:
为什么Math.Round(0.49999999999994)返回1
摘自他的帖子:
In Java 6 (and presumably earlier), round(x) is implemented as
floor(x+0.5). This is a specification bug, for precisely this one
pathological case. Java 7 no longer mandates this broken
implementation.
号
您的示例的输出是
1 2 3 4 5 6 7 8 9 |
如果您依赖精确的值,那么应该使用