NaN对双打意味着什么?

NaNInfinity什么区别? NaN何时出现? 它是什么?

来自维基百科 :

在计算中,NaN(非数字)是表示未定义或不可表示的值的数值数据类型的值,尤其是在浮点计算中。 1985年,IEEE 754浮点标准引入了NaNs的系统使用,以及其他非有限量(如无穷大)的表示。

从MSDN :

  • 表示不是数字(NaN)的值。 该字段是常量。

  • 该常数的值是将零除以零的结果。

  • 当操作结果未定义时,将返回此常量。

  • 使用IsNaN确定值是否不是数字。 通过将值与另一个等于NaN的值进行比较,无法确定值是否为数字。

Infinity ( 正无穷大和负无穷大 )是导致溢出的浮点运算的结果(例如3.0 / 0 )。

  • Infinity是一种数学结构:

    例如,在欧几里德空间中,通过null元素(在这种情况下为零)的除法应该产生无穷大:

     1 / 0 = Infinity 
  • Not a NumberNaN是计算构造,它伴随着解析器和程序限制,并且根据所讨论的函数 ,其输出可以被赋予不同的含义。

    例如,结果可能只能在数学上使用不同的数字系统来处理,这对于数学家来说很容易,但在你的函数中,你可能只是留下返回NaN的唯一实用选项。 考虑一下-1平方根:

     sqrt(-1) = NaN 

    ……在complexphase space易于处理的操作。

实验

在浏览器中打开JavaScript.Console(CTRL + SHIFT + J),然后键入

 >>> Math.sqrt(-1) NaN >>> 1/0 Infinity >>> Number.MAX_VALUE 1.7976931348623157e+308 >>> Number.MAX_VALUE *2 Infinity >>> parseFloat("I am not a Number") NaN 

在C#中,典型的“NaN情境”主要通过例外处理:

 csharp> Int64.MaxValue; 9223372036854775807 csharp> Int64 i_64 = Int64.MaxValue; //the number will overflow into the sign-bit csharp> i_64 +=1; //...or similarly with Doubles... csharp> Double.MaxValue; 1.79769313486232E+308 //following, an exception is thrown before overflowing csharp> Int64 i_64 = Int64.MaxValue+1; {interactive}(1,29): error CS0220: The operation overflows at compile time in ch ecked mode 

动态类型语言

总的来说, NaN的使用在不同的编程语言中有些灵活分配。 在丢失一些“上下文信息”时使用NaN在动态类型脚本语言中是方便的,其中程序员通常不想打扰复杂的exception类型及其处理。

通常在0除以0时发生。阅读更多内容: http : //msdn.microsoft.com/en-us/library/system.double.nan.aspx

NaN代表“非数字值”。 为避免exception,您可以使用IsNaN来确定值不是数字。

NaN表示“非数字”,并告诉您double类型的变量没有任何值。