为什么float('nan')在python中不等于它自己

nic*_*har -2 python

In [6]: a = float('nan')

In [7]: a == a
Out[7]: False
Run Code Online (Sandbox Code Playgroud)

为什么?

Dav*_*rtz 6

有两个原因,一个是实际的,一个是历史的.历史原因是,这使得测试NaN变得微不足道.如果该值不等于它自己,则为NaN.

实际的原因是NaN用于表示未定义值的各种不同情况,并非所有未定义的值都相等.

应该NaN/ NaN等于1?想想会有多疯狂.认为NaN应该相等的只是不那么疯狂.