为什么“圆形”会出现这种奇怪的行为?内置。(Python 2.6)
为什么会这样?
>>> round(2/3)
0.0
>>> round(0.66666666666666666666666666666667)
1.0
>>> round(2.0/3)
1.0
Why So ?
>>> round(2/3)
0.0
>>> round(0.66666666666666666666666666666667)
1.0
>>> round(2.0/3)
1.0
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这对于
round()
来说并不奇怪:试试这个:
将
/
与两个整数值一起使用将进行整数除法。因此,round()
的参数是已经 0,这使得round()
返回 0。更新: 正如 @Mark 在评论中指出的,这种行为在 Python 3 中发生了变化:
2/3
将进行浮点除法就像 Python 2 中的2.0/3
一样。2//3
可用于获取两个版本上的整数除法行为。您的最后一个示例有效,因为
2.0
不是整数,因此2.0/3
将执行“正确的”浮点除法:That's not strange behaviour from
round()
:Try this:
Using
/
with two integer values will do an integer division. So the argument toround()
is already 0, which makesround()
return 0.Update: as @Mark noted in the comment, this behaviour changed in Python 3:
2/3
will do a floating point division as2.0/3
does in Python 2.2//3
can be used to get integer division behaviour on both versions).Your last example works, because
2.0
is not integer, so2.0/3
will do a "propper" floating point division: