Dor*_*ore 9 python decimal python-2.x python-3.x
我的程序计算数学常数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')
Run Code Online (Sandbox Code Playgroud)
给定平台上最大的可表示有限数取决于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')
Run Code Online (Sandbox Code Playgroud)
有效位数取决于decimal.MAX_PREC例如以e给定精度计算:
>>> from decimal import Context
>>> Context(prec=60).exp(1)
Decimal('2.71828182845904523536028747135266249775724709369995957496697')
Run Code Online (Sandbox Code Playgroud)
常量(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')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4967 次 |
| 最近记录: |