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 шт):

Автор решения: deatomiz3d
from math import atan
Катет1 = 10**1000
Катет2 = 10
alpha1 = round(atan(Катет1/Катет2), [кол-во знаков после запятой])
print(alpha1)

Как вы поняли round(x, n) округляет x до заданного n знаков после запятой. Данный метод не исправляет ошибку, исправить ее округляя нельзя, у python есть определенный размер ограничения чисел после плавающей точки, решается только n // n2 который делит число нацело.

→ Ссылка
Автор решения: pagislav
from math import atan
from decimal import Decimal

cat1 = Decimal(10**1000)
cat2 = Decimal(10)

alpha1 = atan(cat1 / cat2)
print(alpha1)

Вы можете обойти переполнения с помощью Decimal. И округление не понадобится

→ Ссылка
Автор решения: CrazyElf

Ещё вариант решения с помощью библиотеки Numpy:

import numpy as np

cat1 = np.float128(10**1000)
cat2 = 10

alpha1 = np.arctan(cat1 / cat2)
print(alpha1)

Вывод:

1.5707963267948966193
→ Ссылка