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 许可协议
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 许可协议
您必须编写: 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 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答974 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
在 Python 2 中,
sqrt=x**(1/2)
整数除法。1/2 == 0
。所以 x (1⁄2)等于 x (0) ,即 1。
这没有错,这是对不同问题的正确答案。
如果您想在不导入数学模块的情况下计算平方根,则需要使用
x**(1.0/2)
或x**(1/2.)
。其中一个整数必须是浮点数。注意:在 Python 3 中不是这种情况,其中
1/2
将是0.5
而1//2
将改为整数除法。