gpt4 book ai didi

java - Java 6 和 Java 8 中不同的舍入结果

转载 作者:行者123 更新时间:2023-12-01 21:09:36 26 4
gpt4 key购买 nike

我正在重写一个旧的 Java 6 程序,该程序是为了在 Java 8 中执行一些科学计算而编写的,但在这种情况下我得到了不同的舍入运算结果。

Java 6 对像 0.499999999999999999994 这样的输入进行四舍五入至1但 Java 8 正在实现 0 。我无法理解这里的问题。

例如:

private void foo() {
System.out.println(Math.round(0.499999999999999999994));
}

上述代码对于不同的 Java 版本表现不同。

如果有人能够阐明这个问题,那就太好了。

最佳答案

我认为您偶然发现了 Java 6 中的一个已知错误,该错误后来在 Java 7 中修复。这解释了 Java 6Java 中奇怪的代码行为8 .

错误信息:

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6430675

更多信息和 @OliverCharlesworth 的精彩解释可以在这篇文章中找到:

Why does Math.round(0.49999999999999994) return 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.

关于java - Java 6 和 Java 8 中不同的舍入结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41412413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com