import math
if n < 0:
raise ValueError("n must be >= 0")
if math.floor(n) != n:
raise ValueError("n must be exact integer")
if n+1 == n: # catch a value like 1e300
raise OverflowError("n too large")
result =1;
factor =2;
while factor <=n:
result *= factor
factor += 1
return result
这是一个因子函数。我不明白“如果n + 1 == n:”,那么它表示“太大的整数”异常。为什么会这样?
答案 0 :(得分:0)
Python对可以使用的数字的大小有限制。从概念上讲,如果Python的最大数量是10,000并输入数字10,001,Python会将该数字截断为10,000,即num == num+1
。
以下是更详细的更好答案:What is the maximum float in Python?。
答案 1 :(得分:0)
首先,我不知道为什么这个程序存在,因为python对最高整数(https://docs.python.org/3/library/stdtypes.html#typesnumeric)没有限制。然而,正如之前的人所说的那样,这可以防止截断,例如&#34; 1e300&#34;其中10 ^ 300和10 ^ 300 + 1之间的差异相对较小,忽略了较小的值。