print('NaN')
'NaN'
但是
print(float('NaN'))
'nan'
为什么这样工作?“ NaN”和“ nan”有什么区别
答案 0 :(得分:3)
第一个实例'NaN'
是一个字符串。没有数字意义。
>>> type('NaN')
<class 'str'>
第二个实例是IEEE 754 Not A Number value,它是一个浮点数。
>>> type(float('NaN'))
<class 'float'>
float('NaN')
的表示形式始终为nan
,无论用于创建它的字母大小写如何。
# Those all work
float('NaN')
float('nan')
float('nAn')
请注意,nan
值也可以通过math
模块访问,就像inf
一样,它是来自IEEE 754标准的另一个值。
from math import nan, inf
答案 1 :(得分:2)
这是因为Python的NaN
(不是数字)表示为浮点数(来自IEEE 754 floating-point standard)。
因此,当您输入'NaN'
时,它将保留为str
:
>>> 'NaN'
'NaN'
>>> type('NaN')
<class 'str'>
但是当您尝试将str
的{{1}}表示转换为float
时,它将响应该float
的相应float
表示:
str
从技术上讲,由于>>> float('123.45')
123.45
>>> type(float('123.45'))
<class 'float'>
是'NaN'
的可识别的str
表示形式,因此它可以无错误地进行转换:
float
答案 2 :(得分:1)
@OlivierMelançon是正确的'Nan'
返回字符串float('NaN')
返回浮点数
因此,您可以按如下所示进行检查:
>>> import math
>>> x=float('NaN')
>>> math.isnan(x)
True
>>> x='NaN'
>>> math.isnan(x)
Traceback (most recent call last):
File "<pyshell#60>", line 1, in <module>
math.isnan(x)
TypeError: must be real number, not str
>>>
答案 3 :(得分:0)
print('NaN')
仅按原样打印参数字符串。对于print
函数,它与任何其他字符串相同。
>>> type('NaN')
<class 'str'>
而float('NaN')
实际上是一个Not A Number
,它表示为nan
。
>>> type(float('NaN'))
<class 'float'>