double.NaN
小於負無窮大。
從他們解釋的元數據信息;
public const double NegativeInfinity = -1.0/0.0
public const double NaN = 0.0/0.0;
從Double.CompareTo()
方法;
比較此實例的一個指定的雙精度浮點 數並返回一個整數,指示此 實例的值是否小於,小於指定的雙所述的 的值等於或大於精確的浮點數。
如果此實例不是數字(NAN)和價值是多少
Double.CompareTo()
方法返回負整數
讓我們來看看這個樣本(這裏是一個DEMO
);
void Main()
{
double a = double.NaN;
double b = double.NegativeInfinity;
Console.WriteLine(a.CompareTo(b));
}
即使我們看看IL代碼,double.NaN
代表與00 00 00 00 00 00 F8 FF
和double.NegativeInfinity
代表與00 00 00 00 00 00 F0 FF
;
IL_0000: ldc.r8 00 00 00 00 00 00 F8 FF
IL_0009: stloc.0
IL_000A: ldc.r8 00 00 00 00 00 00 F0 FF
IL_0013: stloc.1
IL_0014: ldloca.s 00
IL_0016: ldloc.1
IL_0017: call System.Double.CompareTo
IL_001C: call System.Console.WriteLine
那麼,什麼是你的問題? – Servy
不,這意味着對於排序的情況,NaN被認爲小於負無窮大。當我將NegativeInfinity與null比較時,我會猜測相同的規則。 –
除了「這是規格說明要做的事情」或者可能是一些瘋狂的猜測之外,你不可能得到任何答案。 – Servy