Как выполнить арифметическое выражение с высокой точностью?

Как заставить питон посчитать выражение, например

(1/3-0.3333333333333333)*10**16

Нужно повысить точность расчета, но я не знаю, как это сделать. Знаю, что можно сделать через Decimal, но тогда каждое числовое значение нужно будет записать как Decimal('1') и т.д.

А можно ли задать точность более "красиво" типа a = Decimal('необходимые вычисления')?


Ответы (1 шт):

Автор решения: Кирилл Малышев

Можете воспользоваться модулем sympy.

from sympy import *
result = N("(1/3-0.3333333333333333)*10**16")

В результате получится значение

0.333333333333333

Вторым аргументом можно задать точность вычислений.

print(N("(1/3-0.3333333333333333)*10**16", 50))
# 0.33333333333333333333333333333333333333333333333333

Результат будет иметь тип sympy.core.numbers.Float. Его можно выводить на экран, использовать в других выражениях как с методами sympy, так и в обычной арифметике. Получить стандартный float можно, применив функцию float().

→ Ссылка