Python:带浮点的任意精度

2024-09-29 19:30:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图计算math.exp(9500),但遇到了一个OverflowError: math range error(大约是6.3e4125)。从this question看来,这似乎是由于一个太大的浮点数,公认的答案是“(…)稍微超出了double的范围,所以它导致了溢出”。在

我知道Python可以处理任意大的整数(long类型),有没有办法用同样的方式处理任意大的浮点?在

编辑:我最初的问题是关于使用整数来计算exp(n),但正如Eric Duminil所说,最简单的方法是3**n,它没有提供任何有用的结果。我知道这个问题可能与this one相似。在


Tags: 答案类型方式range整数errormaththis
3条回答

我认为不可能用整数来近似exp()。如果使用3**n而不是2.71828182845905**n,则计算将完全无用。在

一个可能的解决方案是使用^{}。根据文件:

There is essentially no upper precision limit

>>> from sympy import *
>>> exp(9500)
exp(9500)
>>> exp(9500).evalf()
6.27448493490172e+4125

也可以指定所需精度:

^{pr2}$

使用exp(9500).evalf(5000),甚至可以得到最接近exp(9500)的整数。在

下面是使用Python计算结果的另一种方法:

exp(9500)

太大了。在

但是log10(exp(9500))不是。在Python中不能这样计算它,但是log10(exp(9500))是{},它是{}:

^{pr2}$

这样,您就可以计算出在普通Python中exp(9500)是{},而不需要任何库!在

尝试long类型。在

int类型自3.0版本起已从python中删除。在

相关问题 更多 >

    热门问题