Python. Ошибка: Большоe количества знаков после запятой
Необходимо вычислить арктангенс с одним очень большим (относительно другого) катетом. Выдается ошибка OverflowError: integer division result too large for a float Как сделать чтоб ответ округлялся до заданного кол-ва знаков после запятой и таким образом обойти эту ошибку. Спасибо
from math import atan
Катет1 = 10**1000
Катет2 = 10
alpha1 = atan(Катет1/Катет2)
print(alpha1)
Ответы (3 шт):
from math import atan
Катет1 = 10**1000
Катет2 = 10
alpha1 = round(atan(Катет1/Катет2), [кол-во знаков после запятой])
print(alpha1)
Как вы поняли round(x, n) округляет x до заданного n знаков после запятой.
Данный метод не исправляет ошибку, исправить ее округляя нельзя, у python есть определенный размер ограничения чисел после плавающей точки, решается только n // n2 который делит число нацело.
from math import atan
from decimal import Decimal
cat1 = Decimal(10**1000)
cat2 = Decimal(10)
alpha1 = atan(cat1 / cat2)
print(alpha1)
Вы можете обойти переполнения с помощью Decimal. И округление не понадобится
Ещё вариант решения с помощью библиотеки Numpy:
import numpy as np
cat1 = np.float128(10**1000)
cat2 = 10
alpha1 = np.arctan(cat1 / cat2)
print(alpha1)
Вывод:
1.5707963267948966193