Преобразование результата с плавающей запятой в Decimal
, конечно, недостаточно. Вы должны выполнить все вычисления с использованием Decimal
объектов и, если вам нужна большая точность, вы должны сообщить decimal
об этом
In [73]: from decimal import Decimal, getcontext
In [74]: getcontext().prec = 70
In [75]: e = Decimal(1)
In [76]: x = Decimal(200000)
In [77]: while x>0:
...: e = Decimal(1)+e/x
...: x = x-Decimal(1)
In [78]: e
Out[78]: Decimal('2.718281828459045235360287471352662497757247093699959574966967627724076')
In [79]: str(e)[:52]
Out[79]: '2.71828182845904523536028747135266249775724709369995'