为什么“圆形”会出现这种奇怪的行为?内置。(Python 2.6)

发布于 2024-11-09 07:12:03 字数 236 浏览 0 评论 0原文

为什么会这样?

>>> 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小清晰的声音 2024-11-16 07:12:03

这对于 round() 来说并不奇怪:

试试这个:

>>> 2/3
0

/ 与两个整数值一起使用将进行整数除法。因此,round()参数已经 0,这使得 round() 返回 0。

更新: 正如 @Mark 在评论中指出的,这种行为在 Python 3 中发生了变化2/3 将进行浮点除法就像 Python 2 中的 2.0/3 一样。2//3 可用于获取两个版本上的整数除法行为。

您的最后一个示例有效,因为 2.0 不是整数,因此 2.0/3 将执行“正确的”浮点除法:

>>> 2.0/3
0.6666666666666666

That's not strange behaviour from round():

Try this:

>>> 2/3
0

Using / with two integer values will do an integer division. So the argument to round() is already 0, which makes round() return 0.

Update: as @Mark noted in the comment, this behaviour changed in Python 3: 2/3 will do a floating point division as 2.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, so 2.0/3 will do a "propper" floating point division:

>>> 2.0/3
0.6666666666666666
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文