确保 Python 中的精确浮点结果

时间:2021-07-13 11:32:16

标签: python decimal

我有一个表示表达式的 AST,我想通过在不损失精度的情况下评估一些节点来简化它。我发现 decimal.Decimal 模块可能对此有用,但是我已经偶然发现了一个问题:结果似乎还是根据 decimal.getcontext().prec 进行了四舍五入:

>>> a = decimal.Decimal('1.000000000000000000000000000000000000000001')
>>> b = decimal.Decimal('1.000000000000000000000000000000000000000001')
>>> a+b
Decimal('2.000000000000000000000000000')

有没有办法让 decimal.Decimal 在可能的情况下找出准确存储结果所需的精度(即不包括除法和根)?

对于除法和根,我希望能够找出结果是否确实准确,可能是通过执行反向运算(乘法)并检查结果是否等于起始操作数。有没有更好的方法?

0 个答案:

没有答案