【发布时间】:2011-11-15 13:41:00
【问题描述】:
我遇到了 Java 的一个奇怪的角落。(我觉得很奇怪)
double dd = 3.5;
float ff = 3.5f;
System.out.println(dd==ff);
o/p: 真
double dd = 3.2;
float ff = 3.2f;
System.out.println(dd==ff);
o/p: 假
我观察到,如果我们将任何两个值(我在示例中提到的浮点数和双精度数)与 .5 或 .0 进行比较,例如 3.5、234.5、645.0
然后输出为true,即两个值相等,否则输出为false,尽管它们相等。
即使我尝试创建方法strictfp,但没有运气。
我错过了什么吗?
【问题讨论】:
-
...我们又来了。
-
@Kerrek:你能带我一起去吗?
-
@Ajinka:大约每三天出现一次关于浮点类型的问题,对于值的精确表示具有完全相同的混淆。 :-)
-
@Ajinkya:确实——就像带着炸弹旅行来利用统计数据为你带来优势:-)