我正在检查doctest并将阶乘示例复制到我的编辑器。因为使用递归感觉更像函数式编程,所以我想像这样更改示例;
def factorial(n):
# ... omitted
if n+1 == n: # catch a value like 1e300
raise OverflowError("n too large")
if n == 0:
return 1
else:
return factorial(n - 1) * n
在此更改之后,其中一项测试失败了;
Failed example:
factorial(30.0)
Expected:
265252859812191058636308480000000L
Got:
2.6525285981219103e+32
这种差异的原因是什么?