NaN
никогда не равно NaN
(даже в пределах одного типа). Следовательно, почему существует функция IsNaN :
Double zero = 0;
// This will return true.
if (Double.IsNaN(0 / zero))
{
Console.WriteLine("Double.IsNan() can determine whether a value is not-a-number.");
}
Вы также должны знать, что ни одно из показанных вами сравнений на самом деле не происходит "как есть". Когда вы пишете floatValue == doubleValue
, плавающие неявно преобразуются в удвоенные значения перед выполнением сравнения.