gpt4 book ai didi

python : arbitrary precision with floats

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:16 25 4
gpt4 key购买 nike

我尝试计算 math.exp(9500) 但遇到了 OverflowError: math range error(大约是 6.3e4125)。来自 this question似乎是由于 float 太大,接受的答案是“(...) 略微超出 double 范围,因此会导致溢出”。

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

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

最佳答案

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

一种可能的解决方案是使用 Sympy 。根据文档:

There is essentially no upper precision limit

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

您还可以指定所需的精度:

>>> exp(9500).evalf(1000)
6.274484934901720177929867046175406311474380389941415760684209191232450360090766458256588885184199320756050569665785657269735313171886975309933254563488343491718198237894473901620914303565550450204805537225888529509352754121292701357622411614860860409639719786022989336837263283678476008817556351031696366815467221836948040042378034720460820127399855873232167818091083005170669482845098735176209372328114732133251096196535355946589133977397512846130629857604295369747597459602137604440011394793443041829253598478244189078131130488653468669559814695095974271938947640276013215753183113041899037415404445478806695965167014404297848725756879184380559837391976534521522360723388582608454995349380217499779247330557664230806254642768796486899322646423713763772064068933790640394967085887914192401473425799354391464743910233873602389444180426155866237536459654917521713769608318128404177877383203786348495822099924812081683286880293701785567962687838594752986160305764297117036426951203418854463404773701882e+4125

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

关于 python : arbitrary precision with floats,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45296517/

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