Python内置pow和大数学的数字pow之间的区别

时间:2016-10-10 14:10:22

标签: python math largenumber karatsuba

我发现对于大整数,math.pow没有成功转换为整数版本。用math.pow实现时,我遇到了一个bug Karatsuba multiplication

例如:

>>> a_Size=32
>>> pow(10,a_size) * 1024
102400000000000000000000000000000000
>>> math.pow(10,a_size) * 1024
1.024e+35
>>> int(math.pow(10,a_size) * 1024)
102400000000000005494950097298915328

我使用了10 ** a_size并获得了大整数的正确结果。

对于花车,请访问Difference between the built-in pow() and math.pow() for floats, in Python?

请解释为什么math.pow会出现这种差异。只观察到23次或更高的10次幂。

1 个答案:

答案 0 :(得分:2)

math.pow()始终返回一个浮点数,因此您受到float精度的限制(几乎总是IEEE 754双精度数)。另一方面,当使用整数参数调用时,内置的pow()将使用Python的任意精度整数运算。