计算机的除法和求幂有什么区别?
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
,您可以获得正确的除法结果
在尝试解决优化问题时,我不断得到:
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
,您可以获得正确的除法结果