python中的数值精度

时间:2013-10-30 15:58:08

标签: python numerical-analysis

我一直在使用python进行简单的数值实验,就像计算一样 阶乘。例如,计算阶乘32:

我的日常工作:

2.6313083693369503e+35

来自scipy.misc:

2.6313083693369355e+35

我想指出我的例程计算阶乘的对数, 它计算从1到32的对数的形式(在这种情况下) 然后我只是采用exp函数(我这样做是因为从中学到的东西 Fortran 90)。

令人惊讶的是,正确答案是

263130836933693530167218012160000000

根据pari / gp。

如果有人可以指出我可以寻找的参考资料,我会很高兴 在Python中正确的数字答案。文档没关系,但只有在需要的时候 “短”数字。

2 个答案:

答案 0 :(得分:0)

logexp函数对浮点进行操作,浮点数的精度有限。另一方面,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