java.lang.Math#min(double, double):在哪种情况下可以“a!= a”返回“true”?
public static double min(double a, double b) {
if (a != a) return a; // a is NaN
if (a == 0.0d && b == 0.0d && Double.doubleToLongBits(b) == negativeZeroDoubleBits) return b;
return (a <= b) ? a : b;
}
在这种情况下,可以a != a
返回true
?它似乎是a
是NaN,但我无法想象一个例子。你能提供一个吗?
一个永远等于一个不管是什么,该行不执行任何操作。 我很惊讶你的IDE不称它为不可达代码。 – tom
@ tommycake50错了。看下面的答案。比较NaNs的相等性总是返回false。 –
答案出现在问题代码的注释中;-) –