为了账号安全,请及时绑定邮箱和手机立即绑定

为什么南不等于南?

为什么南不等于南?

为什么南不等于南?相关的IEEE标准定义了数值常数NaN(而不是数字),并规定NaN应该与其自身进行比较。那是为什么?我熟悉的所有语言都实现了这个规则。但是,它经常会导致重大问题,例如当NaN存储在容器中,当NaN存储在正在排序的数据中时,等等。更不用说,绝大多数程序员期望任何对象都与自身相等(在他们了解NaN之前),因此,令人惊讶的是,它们增加了错误和混乱。IEEE标准是经过深思熟虑的,所以我相信有一个很好的理由,为什么NaN与其本身相比是不好的。我就是搞不懂是什么。
查看完整描述

3 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

井,log(-1)施予NaN,和acos(2)也给NaN..这是否意味着log(-1) == acos(2)?显然不是。因此,非常有意义的是NaN并不等于自己。

差不多两年后,我们重新讨论了这个问题,这里有一个“NaN安全”比较函数:

function compare(a,b) {
    return a == b || (isNaN(a) && isNaN(b));
}


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 447 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信