我发现对于大整数,math.pow()
没有成功给出它的整数版本。
(我在使用 math.pow
实现时遇到了一个错误 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 次幂和更高的次方观察到。
最佳答案
math.pow()
总是返回一个 float ,因此您会受到 float
精度的限制(几乎总是一个 IEEE 754 double )。另一方面,当使用整数参数调用时,内置的 pow()
将使用 Python 的任意精度整数算法。
关于python - Python 内置 pow 和大整数的数学 pow 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39960275/