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

标签 python math largenumber exponentiation

我发现对于大整数,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/

相关文章:

c++ - C++中的无限循环

python - Python 中奇怪的 select.select() 行为

python - Keras 模型导入名称未定义

python - SQLAlchemy 查询表与外键连接

algorithm - 找到两条线段的交点

lua - 在 Redis Lua 中精确处理大量数字

python - 在 Python 中不支持增加集合?

Python 二进制运算

NAN、INF(非收敛)的 C++ std::complex<> 数据类型测试

java - 计算 100,000 个整数数组的反转,为什么会得到负输出?