Как выполнить арифметическое выражение с высокой точностью?
Как заставить питон посчитать выражение, например
(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().