为什么 Python 给出平方根的“错误”答案? Python 2 中的整数除法是什么?

新手上路,请多包涵
x = 16

sqrt = x**(.5)  #returns 4
sqrt = x**(1/2) #returns 1

我知道我可以 import math 并使用 sqrt ,但我正在寻找上述问题的答案。 Python 2 中的整数除法是什么?此行为在 Python 3 中已修复。

原文由 Merlin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 457
2 个回答

在 Python 2 中, sqrt=x**(1/2) 整数除法。 1/2 == 0

所以 x (12)等于 x (0) ,即 1。

这没有错,这是对不同问题的正确答案。

如果您想在不导入数学模块的情况下计算平方根,则需要使用 x**(1.0/2)x**(1/2.) 。其中一个整数必须是浮点数。

注意:在 Python 3 中不是这种情况,其中 1/2 将是 0.51//2 将改为整数除法。

原文由 smessing 发布,翻译遵循 CC BY-SA 4.0 许可协议

您必须编写: sqrt = x**(1/2.0) ,否则执行整数除法并且表达式 1/2 返回 0

此行为在 Python 2.x 中是“正常”的,而在 Python 3.x 中 1/2 计算为 0.5 。如果你想让你的 Python 2.x 代码表现得像 3.x wrt division write from __future__ import division - 然后 1/2 将评估为 0.5 向后兼容性,和 1//2 将评估为 0

郑重声明,计算平方根的首选方法是:

 import math
math.sqrt(x)

原文由 Óscar López 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题