为什么这种奇怪的'round'内置行为。(python 2.6)

时间:2011-05-23 08:44:30

标签: python rounding

为什么这样?

>>> round(2/3)

0.0

>>> round(0.66666666666666666666666666666667)

1.0

>>> round(2.0/3)

1.0

1 个答案:

答案 0 :(得分:16)

round()

这并不奇怪

试试这个:

>>> 2/3
0

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

更新,正如@Mark在评论中指出的那样,this behaviour changed in Python 32/3将在{2}中执行浮点除法。2.0/3在Python 2中执行。{{ 1}}可用于在两个版本上获得整数除法行为。)

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

2.0/3