我正在与Pandas read_csv函数中的一些浮点问题作斗争。在我的调查中,我发现了这个:
In [15]: a = 5.9975
In [16]: a
Out[16]: 5.9975
In [17]: np.float64(a)
Out[17]: 5.9974999999999996
为什么内置float
的Python和Python的np.float64
类型给出不同的结果?我以为他们都是C ++双打?
答案 0 :(得分:20)
>>> numpy.float64(5.9975).hex()
'0x1.7fd70a3d70a3dp+2'
>>> (5.9975).hex()
'0x1.7fd70a3d70a3dp+2'
它们是相同的数字。不同的是他们的代表性; Python本机类型使用“理智”表示,而NumPy类型使用精确表示。