You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何比较NaN时不能使用==运算符?

为什么NaN不能用==运算符比较?

这是由IEEE 754浮点数标准明确规定的行为:

  • NaN(Not a Number)代表无效或未定义的数值结果,比如0除以0、负数开平方这类操作的输出。
  • 标准规定,任何涉及NaN的相等性比较(包括NaN和自身比较)都必须返回False——因为NaN本身不代表确定的数值,无法判定它和任何值(包括自己)是否相等。

看你给出的代码示例:

a = float("NaN")
a == float("NaN")  # 输出False

两个NaN都是无效数值,按标准不能判定为相等,因此返回False。

而np.isnan(a)返回True,是因为这个函数是专门用于检测NaN的工具,它直接判断浮点数是否符合NaN的编码格式,而非进行相等性比较,完全贴合IEEE 754的检测规则。

内容的提问来源于stack exchange,提问作者Luis P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:42:22