Python 3十进制模块计算可逆性

问题描述 投票:0回答:1

我正在尝试实现可逆物理引擎,因此我决定使用十进制模块。因此,这显然有效。

>>> from decimal import *
>>> a = Decimal('1')
>>> b = Decimal('0.82')
>>> a = a*b/b
>>> print(a)
1

但是,如果重复此操作,即“乘以100,然后除以100,”,结果将不再精确等于a

>>> for _ in range(100):
...     a = a*b
...
>>> for _ in range(100):
...     a = a/b
...
>>> a
Decimal('0.9999999999999999999999999965')

我做错什么了吗?是否可以可逆地进行这些计算,以便获得初始结果?

python decimal precision bignum arbitrary-precision
1个回答
1
投票

十进制没有无限精度。如果发现它不太准确,可以单击increase its precision

from decimal import *
getcontext().prec = some larger number
© www.soinside.com 2019 - 2024. All rights reserved.