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。 –
答案出現在問題代碼的註釋中;-) –