python中的极限浮点精度数字1.0-(0.1^200)



我创建了一个具有极高浮点精度的阈值。我需要一个值,大约是0,999999999…有200个9。这在python中可能吗?

我想到的一个解决方案是使用1.-1e-200创建它,但这只给了我值1。

正常变量是不可能的。Python使用处理器的双精度浮点数字,该数字包含大约17位小数。

有一些像bigfloat这样的附加包可以进行任意浮点运算,但您需要一个很好的理由来使用它们。大多数人高估了浮点数学对精度的需求。

标准fractions.Fraction类提供了无限制精度的精确有理算术。

>>> from fractions import Fraction
>>> x = Fraction(1) - Fraction(1, 10**200)

如果你想要高精度而不是精确的算术,decimal.Decimal也可能适合你的需求,但你必须调整上下文设置,以允许超过默认的28个有效数字。

>>> from decimal import Decimal, Context
>>> decimal.setcontext(Context(prec=1000))
>>> x = Decimal(1) - 1 / Decimal(10**200)

最新更新