This question already has answers here:
How can I force division to be floating point? Division keeps rounding down to 0?

(11 个回答)


7年前关闭。




为什么这个示例中的内置运算符 4**(1/2)(这是一个平方根运算)作为结果返回 1 而不是 2 作为它应该预期的?如果不会返回可接受的结果,它应该会引发错误,但 Python 会继续工作而不会发生任何崩溃。至少在 Python 2.7.4 64 位发行版中。

数学函数 pow(4,1/2) 也会发生这种情况,该函数返回 1 且没有错误。

相反,在执行 4**(0.5) 时,它​​返回的结果是正确的 2.0,尽管它混合了整数和浮点数而没有任何警告。战俘也是如此。

对这种行为有什么解释吗?它们会被视为错误吗?

最佳答案

1/2 使用地板除法,而不是浮点除法,因为两个操作数都是整数:

>>> 1/2
0

使用浮点值,或使用 from __future__ import division 切换到 Python 3 行为,其中 / 运算符 总是 使用浮点除法:
>>> 1/2.0
0.5
>>> 4**(1/2.0)
2.0
>>> from __future__ import division
>>> 1/2
0.5
>>> 4**(1/2)
2.0

10-08 08:14
查看更多