Я пытаюсь реализовать обратимый физический движок, поэтому я решил использовать десятичный модуль. Так что это, очевидно, работает.
>>> 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')
Я что-то не так делаю? Можно ли сделать эти вычисления обратимо, чтобы я получил первоначальный результат?