我一直在使用python进行简单的数值实验,就像计算一样 阶乘。例如,计算阶乘32:
我的日常工作:
2.6313083693369503e+35
来自scipy.misc:
2.6313083693369355e+35
我想指出我的例程计算阶乘的对数, 它计算从1到32的对数的形式(在这种情况下) 然后我只是采用exp函数(我这样做是因为从中学到的东西 Fortran 90)。
令人惊讶的是,正确答案是
263130836933693530167218012160000000
根据pari / gp。
如果有人可以指出我可以寻找的参考资料,我会很高兴 在Python中正确的数字答案。文档没关系,但只有在需要的时候 “短”数字。
答案 0 :(得分:0)
log
和exp
函数对浮点进行操作,浮点数的精度有限。另一方面,Python的整数可以具有任意精度。因此,您可以使用整数计算线性空间中的阶乘32。
f = 1
for i in xrange(32):
f *= i + 1
print f # prints '263130836933693530167218012160000000'
答案 1 :(得分:0)
你可以这样做:
import operator
n=32
print reduce(operator.__mul__,range(1,n+1))
# 263130836933693530167218012160000000