为什么'round'内置函数会出现这种奇怪行为?(python 2.6)

1 投票
1 回答
1114 浏览
提问于 2025-04-16 18:10

为什么会这样呢?

>>> round(2/3)

0.0

>>> round(0.66666666666666666666666666666667)

1.0

>>> round(2.0/3)

1.0

1 个回答

16

这并不是round()的奇怪行为:

试试这个:

>>> 2/3
0

用两个整数相除会进行整数除法。所以传给round()的参数已经是0了,这就导致round()返回0。

更新:正如@Mark在评论中提到的,这个行为在Python 3中发生了变化:在Python 3中,2/3会进行浮点数除法,就像在Python 2中2.0/3那样。你可以用2//3在两个版本中都得到整数除法的结果。

你最后的例子可以正常工作,因为2.0不是整数,所以2.0/3会进行“正确”的浮点数除法:

>>> 2.0/3
0.6666666666666666

撰写回答