Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么要浮动呢C#中的double.NaN?_C#_.net_Nan - Fatal编程技术网

为什么要浮动呢C#中的double.NaN?

为什么要浮动呢C#中的double.NaN?,c#,.net,nan,C#,.net,Nan,为什么float.NaN!=double.NaN 而float.PositiveInfinity==double.PositiveInfinity和float.NegativeInfinity==double.NegativeInfinity是相等的 示例: bool PosInfinity = (float.PositiveInfinity == double.PositiveInfinity); //true bool NegInfinity = (float.NegativeInfinit

为什么
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
永远不等于
NaN
(即使在同一类型中)。因此,该功能存在的原因:

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
时,在进行比较之前,浮点数实际上会隐式转换为double。

请给出一些数字变为NaN的示例。您注意到
double.NaN!=double.NaN
也是吗?另请参见“为什么double.NaN不等于自身”就像transact-sql一样,NULL与NULL完全不同:P