@Programist18946

Как исправить resulttoo large в коде?

import math


a = int(input("Введите а "))
alpha = int(input("Введите альфа "))
x = int(input("Введите х "))
y1 = math.log(abs(x**3)) + math.tan(alpha)-pow(math.e, a*(x**2)+x)
y2 = math.log10(abs(a**7))+ math.atan(x**2)+((math.pi +4.56* 10**-4)/(math.sqrt(math.sqrt(abs(a+x)))))
print(y1 , y2)

Жалуется что y1 получается огромным числом, помогите пожалуйста
  • Вопрос задан
  • 1270 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Попробовать использовать везде decimal:

import math

a, alpha, x = 10, 10, 10

y1 = math.log(abs(x**3)) + math.tan(alpha)-pow(math.e, a*(x**2)+x)

print(y1)

# OverflowError: (34, 'Result too large')

Та же формула обернутая в decimal.
Выглядит громоздковато, но отрабатывает корректно:

import math
import decimal

decimal.getcontext().prec = 100

a, alpha, x = 10, 10, 10

y1 = decimal.Decimal(math.log(decimal.Decimal(abs(decimal.Decimal(x)**decimal.Decimal(3))))) \
    + decimal.Decimal(math.tan(decimal.Decimal(alpha))) \
    - decimal.Decimal(pow(decimal.Decimal(math.e), decimal.Decimal(a)*(decimal.Decimal(x)**decimal.Decimal(2))+decimal.Decimal(x)))

print(y1)

# -4.339370400623091759291109148627508614055728677394889807059531826625028640984354352252576981241604834E+438
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы