gpt4 book ai didi

python - 产生 OverflowError 的十进制数的幂

转载 作者:太空宇宙 更新时间:2023-11-04 07:44:28 31 4
gpt4 key购买 nike

我有一个返回 log10 值的函数。在将它们转换为正常数字时,出现溢出错误。

OverflowError: (34, 'Numerical result out of range')

我检查了日志值,发生了这个错误,比如 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 值的函数。我需要一个值的“列表”。

最佳答案

I reckon that while python easily performs 10**509, this error must be due to the decimal points overflowing the register.

问题不在于“小数点溢出”,而是由您使用的数据类型引起的。

Python 可以愉快地将 10**509 计算为 long,因为 these have unlimited precision :

>>> type(10**509)
<type 'long'>

但是,此结果太大而无法存储在 float 中:

>>> float(10**509)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: long int too large to convert to float

我们可以很容易地检查最大float:

>>> import sys
>>> sys.float_info.max
1.7976931348623157e+308

查看this question似乎 Numpy float64 具有与标准 float 相同的值范围,因此使用它并不能解决您的问题。

相反,您必须使用提供任意精度 float 的第三方模块之一,例如 mpmathbigfloat .

关于python - 产生 OverflowError 的十进制数的幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11115538/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com