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

Extreme floating point precision number 1.0-(0.1^200) in python

我正在创建一个具有极高浮点精度的阈值。我需要一个类似 0.999999999... 的值,其中包含 200 个 9。在 python 中可以吗?

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

普通变量是不可能的。 Python 使用处理器的双精度浮点数,它包含大约 17 个十进制数字。

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

The standard fractions.Fraction class 提供无限精度的精确有理算术。

>>> 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)