使用numpy.int32时的浮点近似

时间:2013-01-23 09:08:37

标签: python numpy floating-point int

回答一个问题Why does scipy.stats.nanmean give different result from numpy.nansum?,我意识到,将numpy.int32乘以float会导致与带有int的Python POD float的浮动结果不同

使用numpy.int32

时是否有理由导致浮点近似
>>> numpy.int32(1) * 0.2
0.20000000000000001
>>> 1 * 0.2
0.2

1 个答案:

答案 0 :(得分:5)

这两个表达式给出了值相同但类型不同的结果:

In [17]: numpy.int32(1) * 0.2 == 1 * 0.2
Out[17]: True

In [18]: type(numpy.int32(1) * 0.2)
Out[18]: numpy.float64

In [19]: type(1 * 0.2)
Out[19]: float

不同的输出纯粹是由于numpy.float64float之间的默认格式不同。

如果我们反转类型,输出也会反转:

In [12]: float(numpy.int32(1) * 0.2)
Out[12]: 0.2

In [13]: numpy.float64(1 * 0.2)
Out[13]: 0.20000000000000001

这纯粹是一个显示问题。这里没有数字差异。