为什么float.NaN!= double.NaN在C#?

前端之家收集整理的这篇文章主要介绍了为什么float.NaN!= double.NaN在C#?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么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时,浮点将实际上在比较发生之前隐式转换为双精度。

原文链接:/css/221035.html

猜你在找的CSS相关文章