Decimal类可以处理的最大数字是多少?
我的程序计算的数学常数 e 是不合理的。为此,我需要获取大量的阶乘。
int
无法处理大于170!的数字。(我发现Google可以处理的最大计算器是170.654259,但我不确定如何将非整数分解。)
float
也不能处理非常大的数字。
我计算出 e
为750000位数字,真是math.factorial(750000)
个令人难以置信的大数字。但是,Decimal
处理起来显然很轻松。
提出加注Decimal
之前可以处理多少个数字OverflowError
?Python 2和Python 3的大小不同吗?
回答:
Decimal类可以处理的最大数字是多少?
最大的幅度是无穷大:
>>> from decimal import Decimal>>> Decimal('Inf')
Decimal('Infinity')
给定平台上可表示的最大有限数取决于decimal.MAX_EMAX
:
>>> from decimal import Context, MAX_EMAX>>> d = Context(Emax=MAX_EMAX, prec=1).create_decimal('9e'+str(MAX_EMAX))
>>> d.is_finite()
True
>>> d.next_plus()
Decimal('Infinity')
>>> d
Decimal('9E+999999999999999999')
有效位数的数量取决于,decimal.MAX_PREC
例如,以e
给定的精度进行计算:
>>> from decimal import Context>>> Context(prec=60).exp(1)
Decimal('2.71828182845904523536028747135266249775724709369995957496697')
常数(MAX_EMAX
,MAX_PREC
)仅与C实现有关。纯Python版本可以使用更大的值:
>>> from decimal import Context, MAX_EMAX>>> Context(Emax=MAX_EMAX+1, prec=1).create_decimal('9e'+str(MAX_EMAX+1))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: valid range for Emax is [0, MAX_EMAX]
>>> from _pydecimal import Context, MAX_EMAX
>>> Context(Emax=MAX_EMAX+1, prec=1).create_decimal('9e'+str(MAX_EMAX+1))
Decimal('9E+1000000000000000000')
以上是 Decimal类可以处理的最大数字是多少? 的全部内容, 来源链接: utcz.com/qa/399319.html