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 次方及更高的次方观察到。
math.pow()
始终返回浮点数,因此您受到精度的限制float
(几乎始终是 IEEE 754 双精度数)。另一方面,当使用整数参数调用时,内置函数pow()
将使用 Python 的任意精度整数算术。