gpt4 book ai didi

java - 为什么 0.5==0.5f 为真而 0.1==0.1f 为假?

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

请看以下两段代码:

public static void main(String... args)
{
System.out.println(0.5==0.5f);
}

输出:真

 public static void main(String... args)
{
System.out.println(0.1==0.1f);
}

输出:假

为什么会这样?

最佳答案

您正在比较两种类型的值:double 和 float。考虑不精确数字的大小限制。

一个例子:

精确值(十进制)

value1 -> 5 位小数的 1/2 是 0.50000
value2 -> 1/2 后 10 位小数是 0.5000000000

然后

value1 == value2 -> 返回真

不精确的值(十进制)

value3 -> 5 位小数的 1/3 是 0.33333
value4 -> 1/3 后 10 位小数是 0.3333333333

然后

value3 == value4 -> 返回 false,因为它们不一样。

0.1 不能用二进制精确表示(如十进制的 1/3),但 0.5 可以。

0.1d的二进制表示 -> 0.000(1100)1100110011...
0.5d -> 0.1

的二进制表示

关于java - 为什么 0.5==0.5f 为真而 0.1==0.1f 为假?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31357232/

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