为什么 float.NaN != double.NaN
?
而 float.PositiveInfinity == double.PositiveInfinity
和 float.NegativeInfinity == double.NegativeInfinity
相等。
示例:
bool PosInfinity = (float.PositiveInfinity == double.PositiveInfinity); //true
bool NegInfinity = (float.NegativeInfinity == double.NegativeInfinity); //true
bool isNanEqual = (float.NaN == double.NaN); //false, WHY?
最佳答案
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
时, float 实际上会在比较发生之前隐式转换为 double 值。
关于c# - 为什么在 C# 中使用 float.NaN != double.NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5208967/