Ошибка OverflowError: int too large to convert to float стараюсь найти факториал милиона формула выведена из формулыс стирлинга
import math
n=1000000
f=math.sqrt(157*n)
print(n**500*f*n**n/5000000*1359**n)
Ответы (1 шт):
Автор решения: versetty777
→ Ссылка
Думаю, что значение, которое вы вычисляете, слишком большое для того, чтобы быть представленным в виде числа с плавающей точкой. Лучше здесь применить цикл или рекурсию, вместо того, чтобы использовать матем. формулы.
Ещё можно попробовать библиотеки decimal или bigfloat для вычисления факториала.
Или библиотеку numpy, которая имеет функцию factorial.
n = 1000000
result = 1
for i in range(1, n+1):
result *= i
print(result)
или так
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
n = 1000000
print(factorial(n))
Ещё можно решить через math
import math
n = 1000000
print(math.gamma(n+1))
Отмечу, что результат лучше сохранять в файл чтобы не тратить много памяти.