扫码关注官方订阅号
为什么说NaN不等于NaN,难道就是因为语法规定吗
小伙看你根骨奇佳,潜力无限,来学PHP伐。
NaN就是not a number的意思,相当于一个描述性的变量,不存储内容。因此NaN != NaN
NaN
not a number
NaN != NaN
你可以理解为语法规定NaN = not a number
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该怎么办?
isnan()
文中说:"... computation would be best stopped rather than continued for an indefinite time to an Indefinite conclusion"。
我推断,当时那么简陋,估计也不存在什么错误处理机制;一切都靠条件判断进行流程控制。而为了在遇到NaN时停止运行,只能让原本正常通过的条件判断"x == x"变得不通过。于是,计算机领域的一大奇闻就此诞生。
定義NaN不等於NaN是非常合理的, 反過來會有更多麻煩, 比如parseInt("a")和parseInt("b")會相等
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
NaN就是not a number的意思,相当于一个描述性的变量,不存储内容。因此NaN != NaN你可以理解为语法规定
NaN = not a number
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不等於NaN是非常合理的, 反過來會有更多麻煩, 比如parseInt("a")和parseInt("b")會相等