gpt4 book ai didi

java - 舍入错误?

转载 作者:IT老高 更新时间:2023-10-28 20:42:30 26 4
gpt4 key购买 nike

在我的类(class)中,有人告诉我:

Continuous values are represented approximately in memory, and therefore computing with floats involves rounding errors. These are tiny discrepancies in bit patterns; thus the test e==f is unsafe if e and f are floats.

引用 Java。

这是真的吗?我已经将比较语句与 doubles 和 floats 一起使用,并且从未遇到过舍入问题。我从来没有在教科书中读过类似的东西。肯定是虚拟机说明了这一点吗?

最佳答案

这是真的。

这是浮点值在内存中以有限位数表示的固有限制。

例如,这个程序打印“false”:

public class Main {
public static void main(String[] args) {
double a = 0.7;
double b = 0.9;
double x = a + 0.1;
double y = b - 0.1;
System.out.println(x == y);
}
}

您通常会决定某种程度的精度并询问数字是否“足够接近”,而不是与“==”进行精确比较:

System.out.println(Math.abs(x - y) < 0.0001);

关于java - 舍入错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/960072/

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