计算机的除法和求幂有什么区别?

What is the difference between division and exponentiation for a computer?

在尝试解决优化问题时,我不断得到:

 RuntimeWarning: divide by zero encountered in divide

虽然分析上写 1/x 和 x^(-1) 是同一件事,但通过替换每个除法重写我的函数解决了我的问题。

我很好奇是什么让计算机计算除法或求幂有什么不同。

编辑:

我正在解决一个涉及纳米尺度的物理问题。我得到的完整错误是:

    RuntimeWarning: divide by zero encountered in divide
    term = alpha / w

其中 alpha 是某个常数,w>0 是长度。我期望的 w 值约为 1e-9 或更小,而 alpha 约为 0.1。

不过,实际问题还是解决了。我真的很惊讶代码中如此简单的更改解决了所有问题,从而解决了问题。

编辑 2:

我通过写解决了这个问题:

term = alpha * w**(-1)

我知道 ** 等于 Python 中的幂。

在python中,^运算符为异或运算。 求幂是使用 ** 运算符完成的,这将给出 0**-1

的 ZeroDivision 错误

这是你的问题:

>>> alpha = 1
>>> w = 2
>>> term = alpha/w
>>> term
0


>>> term = alpha * w **(-1)
>>> term
0.5
>>>
>>> term = float(alpha)/w
>>> term
0.5

在第一个示例中,您进行整数除法,舍入为 0。在第二个示例中,您通过求幂隐式转换为浮点数。第三个示例表明,通过将任一值转换为 float

,您可以获得正确的除法结果