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

Roc*_*ock 3 python math largenumber exponentiation

我发现对于大整数,math.pow()没有成功给出其整数版本。

(当我用 实现时,我得到了一个有问题的Karatsuba 乘法math.pow)。

例如:

>>> 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
Run Code Online (Sandbox Code Playgroud)

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

对于浮点数,请访问Python 中浮点数的内置 pow() 和 math.pow() 之间的区别?

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

Sve*_*ach 5

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