为什么会这样?
>>> round(2/3)
0.0
>>> round(0.66666666666666666666666666666667)
1.0
>>> round(2.0/3)
1.0
请您参考如下方法:
这不是 round() 的奇怪行为:
试试这个:
>>> 2/3
0
使用带有两个整数值的/ 将进行整数除法。所以 round() 的参数 已经 0,这使得 round() 返回 0。
更新:正如@Mark 在评论中指出的那样,this behaviour changed in Python 3 : 2/3 将像 2.0/3 在 Python 2 中那样进行浮点除法。2//3 可用于获取整数两个版本的除法行为)。
你的最后一个例子有效,因为 2.0 不是整数,所以 2.0/3 将做一个“适当的”浮点除法:
>>> 2.0/3
0.6666666666666666
