【发布时间】:2012-04-19 12:29:28
【问题描述】:
相关的 IEEE 标准定义了一个数字常量 NaN(不是数字),并规定 NaN 应该与自身不相等。这是为什么呢?
我熟悉的所有语言都执行此规则。但它经常会导致严重的问题,例如当 NaN 存储在容器中时的意外行为,当 NaN 在正在排序的数据中时等等。更不用说,绝大多数程序员都希望任何对象都等于自身(在他们了解 NaN 之前),因此让他们感到惊讶增加了错误和混乱。
IEEE 标准经过深思熟虑,因此我确信 NaN 与自身进行比较是不好的,这是有充分理由的。我就是不知道是什么。
编辑:请参考What is the rationale for all comparisons returning false for IEEE754 NaN values?作为权威答案。
【问题讨论】:
-
IEEE 标准是由工程师设计的,而不是程序员、计算机供应商或数学库的作者,NaN 规则对他们来说是一场灾难。
标签: floating-point language-agnostic nan ieee-754