为什么南不等于南?相关的IEEE标准定义了数值常数NaN(而不是数字),并规定NaN应该与其自身进行比较。那是为什么?我熟悉的所有语言都实现了这个规则。但是,它经常会导致重大问题,例如当NaN存储在容器中,当NaN存储在正在排序的数据中时,等等。更不用说,绝大多数程序员期望任何对象都与自身相等(在他们了解NaN之前),因此,令人惊讶的是,它们增加了错误和混乱。IEEE标准是经过深思熟虑的,所以我相信有一个很好的理由,为什么NaN与其本身相比是不好的。我就是搞不懂是什么。
3 回答
呼如林
TA贡献1798条经验 获得超3个赞
log(-1)
NaN
acos(2)
NaN
log(-1) == acos(2)
NaN
function compare(a,b) { return a == b || (isNaN(a) && isNaN(b)); }
添加回答
举报
0/150
提交
取消