相关的 IEEE 标准定义了一个数值常量 NaN (而不是一个数字) ,并规定 NaN 应该与其本身进行比较。为什么?
我所熟悉的所有语言都实现了这个规则。但是它经常引起重大问题,例如,当 NaN 存储在容器中时,当 NaN 存储在正在排序的数据中时,会出现意外的行为,等等。更不用说,绝大多数程序员希望任何对象都等于它自己(在他们了解 NaN 之前) ,所以让他们感到惊讶会增加错误和困惑。
IEEE 标准是经过深思熟虑的,所以我确信 NaN 与它本身相等是不好的,这是有充分理由的。我只是不知道那是什么。
编辑: 请参考 对于 IEEE754 NaN 值返回 false 的所有比较的基本原理是什么?作为权威答案。