我发现对于大整数,math.pow 没有成功转换为其整数版本。使用 math.pow 实现时,我得到了一个错误的Karatsuba 乘法。
例如:
>>> 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,得到了大整数的正确结果。
对于浮点数,请访问Python 中用于浮点数的内置 pow() 和 math.pow() 之间的区别?
请解释为什么 math.pow 会出现这种差异。仅从 23 和更高的 10 次方观察到。