float(nan')表示nan(不是数字)。但我该如何检查呢?


当前回答

测试NaN的通常方法是查看它是否等于自身:

def isNaN(num):
    return num != num

其他回答

测试NaN的通常方法是查看它是否等于自身:

def isNaN(num):
    return num != num

math.isnan()

或将数字与自身进行比较。NaN总是!=NaN,否则(例如,如果是数字),比较应成功。

numpy.isnan(数字)告诉你它是不是NaN。

在Python 3.6中,检查字符串值x math.isnan(x)和np.issan(x)会引发错误。所以我无法检查给定值是否为NaN,如果我事先不知道它是一个数字。以下内容似乎解决了这个问题

if str(x)=='nan' and type(x)!='str':
    print ('NaN')
else:
    print ('non NaN')

我进入这篇文章,因为我在功能方面遇到了一些问题:

math.isnan()

运行此代码时出现问题:

a = "hello"
math.isnan(a)

它引发了异常。我的解决方案是再做一次检查:

def is_nan(x):
    return isinstance(x, float) and math.isnan(x)