首页 > NaN不等于NaN

NaN不等于NaN

为什么说NaN不等于NaN,难道就是因为语法规定吗


定義NaN不等於NaN是非常合理的, 反過來會有更多麻煩, 比如parseInt("a")和parseInt("b")會相等


NaN不是一个数字所以他肯定不等于NaN


NaN = not a number.

例:
'S'不是一个数字吧,
'B'也不是一个数字.

'S'=='B'成立吗...


What is the rationale for all comparisons returning false for IEEE754 NaN values?里,IEEE委员会的一个成员给出了解释(在文中第二个黄色背景的段落),即NaN诞生初期所受到的计算机软、硬件的制约:

当初,还不存在isnan()函数(文中采用的是更广泛的"predicate(谓词)")。那么,如果遇到变量为NaN该怎么办?

文中说:"... computation would be best stopped rather than continued for an indefinite time to an Indefinite conclusion"。

我推断,当时那么简陋,估计也不存在什么错误处理机制;一切都靠条件判断进行流程控制。而为了在遇到NaN时停止运行,只能让原本正常通过的条件判断"x == x"变得不通过。于是,计算机领域的一大奇闻就此诞生。


你可以理解为语法规定
NaN = not a number


NaN就是not a number的意思,相当于一个描述性的变量,不存储内容。因此NaN != NaN

【热门文章】
【热门文章】