计算机的除法和取幂之间有什么区别?

时间:2016-07-13 14:53:12

标签: python runtime-error division zero exponentiation

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

 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中的取幂。

2 个答案:

答案 0 :(得分:2)

在python中,^运算符是XOR运算。 使用**运算符完成指数运算,这将为0 ** - 1

提供ZeroDivision错误

答案 1 :(得分:1)

这是你的问题:

>>> 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。第三个示例显示通过将任一值转换为float

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