回答一个问题为什么 scipy.stats.nanmean 给出的结果与 numpy.nansum 不同?,我意识到numpy.int32
,float
与int
带有float
.
使用时是否有理由导致浮点近似numpy.int32
>>> numpy.int32(1) * 0.2
0.20000000000000001
>>> 1 * 0.2
0.2
回答一个问题为什么 scipy.stats.nanmean 给出的结果与 numpy.nansum 不同?,我意识到numpy.int32
,float
与int
带有float
.
使用时是否有理由导致浮点近似numpy.int32
>>> numpy.int32(1) * 0.2
0.20000000000000001
>>> 1 * 0.2
0.2
这两个表达式给出的结果值相同但类型不同:
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.float64
和之间的默认格式不同float
。
如果我们反转类型,输出也会反转:
In [12]: float(numpy.int32(1) * 0.2)
Out[12]: 0.2
In [13]: numpy.float64(1 * 0.2)
Out[13]: 0.20000000000000001
纯属显示问题。这里没有数字差异。