【发布时间】:2013-01-21 23:26:01
【问题描述】:
此方法返回“真”。为什么?
public static boolean f() {
double val = Double.MAX_VALUE/10;
double save = val;
for (int i = 1; i < 1000; i++) {
val -= i;
}
return (val == save);
}
【问题讨论】:
-
因为
val包含的值与save相同? -
这只是“浮点运算是如何工作的?”再次改写。
-
你错了。
val不会改变。阅读任何有关浮点运算的书籍或在线文章。 -
因为从 val 中减去的数字比 val 小几个数量级,并且不会影响其值。 @us2012 当然是正确的。
标签: java floating-point equals-operator