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:」,那麼它表示一個'太大整數'異常。這是爲什麼?Python中的溢出錯誤檢查
'float'類型有一個精度問題。 Python'int'不。 '1e16 == 1e16 + 1'由於精度損失而成爲'True',但'10000000000000000 == 10000000000000001'爲真,儘管它們在視覺上是相同的。 Python整數只受可用內存的限制。最好檢查用戶輸入的是整數而不是浮點數。 –