float32溢出numpy arange

时间:2017-01-05 13:19:27

标签: python numpy floating-point

在python中,当我想用​​连续的数字填充一个巨大的数组时,我使用了numpy的arange函数。然而,一旦数字开始变大并且我将我的数组转换为float32,数字似乎随机跳跃。一旦我使用float64,一切都按预期工作,但我想知道,这个错误源自何种原因。我想,这是因为大数字无法准确表示。然而, numpy.finfo(numpy.float32)告诉我,float32的最大值约为3.4028235e+38,我几乎不接近。在我的情况下,一切都很好的最后一个数字似乎是

16777216 = 2**24

有人可以告诉我,为什么会这样?

重现行为的代码例如是:

dat = np.arange(64*1026*1026).reshape((64,1026,1026)).astype(np.float32)

0 个答案:

没有答案