gpt4 book ai didi

java - 以下情况背后的原因是什么

转载 作者:行者123 更新时间:2023-11-30 03:25:56 25 4
gpt4 key购买 nike

class MagicWithOperators{
public static void main(String[] args) {
float f = 10.2F;
double d = 10.2;
System.out.println(f==d);
}
}

输出:false

为什么10.2f==10.2是假的但是 10.0f==10.0是真的吗?

最佳答案

原因是值 10.2 无法使用 floatdouble 表示法精确表示。两者都是 10.2 的不同近似值,在数学上并不相等。

10.0f10.0true 的原因是 10 可以在 float 中精确表示> 和 double 表示。

以下是上述所有数字的十六进制表示形式。

41233333          // 10.2f (float, inexact)
4024666666666666 // 10.2 (double, inexact)
4024666660000000 // 10.2f (widened to double, inexact)

41200000 // 10.0f (float, exact)
4024000000000000 // 10.0 (double, exact)
4024000000000000 // 10.0f (widened to double, exact)

转换是通过Integer.toHexString(Float.floatToIntBits())Long.toHexString(Double.doubleToLongBits)完成的。

关于java - 以下情况背后的原因是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30222819/

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