Python中round函数取整异常问题求助
为什么round(2.5)返回2而round(3.5)返回4?
这是因为Python的round()函数默认采用银行家舍入法(四舍六入五成双),并非咱们常规认知里的"四舍五入",具体规则如下:
- 小数部分小于5时,直接舍去
- 小数部分大于5时,向整数部分进一位
- 小数部分恰好等于5时,看整数部分的奇偶性:
- 整数为偶数,就保持原整数(舍去小数)
- 整数为奇数,就进一位让整数变为偶数
对应你的实际场景:
round(2.5)中,整数2是偶数,所以舍去0.5,结果为2round(3.5)中,整数3是奇数,进一位后变成偶数4,结果为45/2的计算结果是2.5,调用round()后自然也返回2,和直接传入2.5的结果一致
如果想要实现传统"四舍五入"得到预期的3,可以用这两种方法:
- 使用
math.ceil()向上取整:math.ceil(5/2)直接返回3 - 针对正数,也可以给数值加0.5后转整数:
int(2.5 + 0.5)结果同样是3
内容的提问来源于stack exchange,提问作者SAM
相关产品推荐
相关产品推荐

