为什么'round'内置函数会出现这种奇怪行为?(python 2.6)
为什么会这样呢?
>>> 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