You are exceeding the max float value (1.7976931348623157e+308
).
Use the decimal module:
import math
from decimal import Decimal
a = 200
b = 198
e = 2.71828
x = Decimal(e**-a)*Decimal(a**b)/math.factorial(Decimal(b))
print round(x, 5)
Output:
0.02806
Compare it with the output that WloframAlpha calculated 0.0280567
In case you want to see the float info, see this:
>>> import sys
>>> print sys.float_info
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)