我正在编写一个需要在服务器上运行的代码,该代码使用旧版本的 python(2.4?)和 Numeric 而不是 numpy,我对此无能为力。为了测试代码,我使用 numpy.oldnumeric 运行它
我从一组 float32 开始,然后将值存储到它们。我的值在 1.0e50-1.0e60 范围内,并且数组一直将它们存储为“inf”。即使投射 1.0e39,也会导致“inf”。浮动不应该最大接近 1.0e108 吗?我怎样才能保留这些价值观?
....
import numpy.oldnumeric as N
data = N.zeros(10, 'f')
....
for i in range(10): data[i] = (1.0e38)*pow(10.0,i)
print data[i]
给
[ 9.99999993e+36 9.99999968e+37 inf inf
inf inf inf inf
inf inf]
解决方案:单精度浮点数(float32)的限制比我想象的要小(~3e38),感谢@aka.nice,所以我从'f'(float32)切换到'dtype = N.float64',它有足够的容量.