Ошибка 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)
Источник: Stack Overflow на русском
import math
n=1000000
f=math.sqrt(157*n)
print(n**500*f*n**n/5000000*1359**n)
Думаю, что значение, которое вы вычисляете, слишком большое для того, чтобы быть представленным в виде числа с плавающей точкой. Лучше здесь применить цикл или рекурсию, вместо того, чтобы использовать матем. формулы.
Ещё можно попробовать библиотеки 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))
Отмечу, что результат лучше сохранять в файл чтобы не тратить много памяти.