gpt4 book ai didi

python - Python的Decimal类是可变宽度的吗?

转载 作者:行者123 更新时间:2023-11-28 16:57:00 27 4
gpt4 key购买 nike

在 Python 中,您可以拥有任意大的整数(尽管它可能会占用您所有的内存来存储它们)。另一方面,对于 float ,它们最终会溢出,如果你试图让一个小数点太多,你就会失去精度。

哪个是 decimal.Decimal类(class)?

小数点前可以有任意数量的数字吗?小数点后呢?有什么限制?

最佳答案

Decimal 具有用户指定的精度;您可以修改当前上下文以指定必须保留多少个小数位。每the docs :

Unlike hardware based binary floating point, the decimal module has a user alterable precision (defaulting to 28 places) which can be as large as needed for a given problem.

然后是一个例子:

>>> from decimal import *
>>> getcontext().prec = 6
>>> Decimal(1) / Decimal(7)
Decimal('0.142857')
>>> getcontext().prec = 28
>>> Decimal(1) / Decimal(7)
Decimal('0.1428571428571428571428571429')

如果确实需要,您可以将精度提高到 1,000,000 或更高,但数学运算会缓慢。在实践中,大多数问题都有一个点,您不需要更高的精度; NASA stops at 16 digits of pi (15 after the decimal) and at the scale of the entire solar system that has an error margin of only an inch or two for any calculations they care about ;他们需要小数点左边更多的位来表示大小,但对于大多数用途来说,默认精度 28 就足够了,将其调高到 40 或 50 应该涵盖与现实世界中的数字相关的任何用例。

限制不在小数点左边右边。它是总位数。因此,如果您有 Decimal(1000000) + Decimal("0.0001"),精度设置为 10 或更小,结果将等于 Decimal( 1000000)(它可能会显示额外的零以匹配精度,但 0.0001 会被丢弃)。舍入或溢出情况下的行为可通过信号进行配置,因此它可以设置标志,或在发生时引发异常。文档对此进行了更详细的介绍。

关于python - Python的Decimal类是可变宽度的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57406470/

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