Python:允许精确到非常小的数字?

时间:2016-03-01 18:27:33

标签: python-2.7 precision

在Python中,当x = 27时,Exp(-x x)为~10 ^ -317。当x> 27时,Exp [-x x]在Python中变为零。但我将x的域从0,到50或甚至更多。那么如何在x> 27之后阻止Python将指数四舍五入为零?它甚至可以做到吗?

谢谢你, --Raj

2 个答案:

答案 0 :(得分:0)

要使用 python 计算非常大的数字,您可以尝试使用 gmpy2 包,如下所示:

import numpy as np
from gmpy2 import mpz
n = 50
print pow(mpz(np.e),n*n)

答案 1 :(得分:0)

本机Python float类型使用标准C double作为基础值。您已达到IEEE 64位浮点类型的限制。

您需要使用其他数据类型。我维护gmpy2库,它支持任意精度整数(mpz),有理(mpq),实数(mpfr)和复数(mpc)类型。该库以C语言编写,使用GMP,MPFR和MPC库。

>>> import gmpy2
>>> gmpy2.exp(-50*50)
mpfr('1.8356726691621567e-1086')
>>> 

mpmath库是另一个不错的选择。