【发布时间】:2023-03-24 23:56:01
【问题描述】:
我有一个返回 log10 值的函数。在将它们转换为正常数字时,我得到一个溢出错误。
OverflowError: (34, '数值结果超出范围')
我检查了日志值,并且发生此错误,例如 508.038057662。
我认为虽然python很容易执行10**509,但这个错误一定是由于小数点溢出寄存器。因此我尝试像这样使用 numpy.float64,
result = np.array([ (10**multiplicity(timeseries,om,ph,bins,pos_arr)) for ph in np.linspace(0,twopi,num = bins+1)], dtype = np.float64)
错误是一样的。我是否声明了 float64 错误??
这里 multiplicity() 是返回 log10 值的函数。我需要一个值的“列表”。
【问题讨论】:
-
嗯 .... 10^509 > 2^64 ... 或者我在这里遗漏了一些明显的东西?
-
10**509 = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L使用 Python -
是的,但正如下面的回答者所说,这是
long类型,而不是float64类型。您可能会注意到,该数据类型最多只能容纳 64 位长的数字。 -
64 位浮点数可以表示比 264 大很多的数字(只是不是该范围内的所有整数!),但远不及 10509。
-
是的。很高兴能更好地了解基本原理...