Python中ceil()与floor()取整问题:实现1.4取1、1.5取2的需求
实现1.4取1、1.5取2的四舍五入逻辑
嗨,这完全不是新手问题哦!很多刚接触数值处理的朋友都会被ceil()和floor()的“一刀切”逻辑困扰😉
你需要的其实是标准四舍五入——也就是小数部分≥0.5时向上取整,否则向下取整。下面给你几种常见的实现方式:
1. 直接用语言内置的四舍五入函数
大部分编程语言都自带了实现这个逻辑的函数,举几个常用例子:
Python:使用
round()函数print(round(1.4)) # 输出 1 print(round(1.5)) # 输出 2注意:Python的
round()采用的是“银行家舍入法”(即当小数部分恰好是0.5时,会取最近的偶数),比如round(2.5)会得到2,round(3.5)得到4。如果需要严格的“0.5就进1”,可以看下面的自定义函数。JavaScript:使用
Math.round()方法console.log(Math.round(1.4)); // 输出 1 console.log(Math.round(1.5)); // 输出 2
2. 自定义实现严格的四舍五入逻辑
如果内置函数不符合你的需求(比如需要完全严格的0.5进1),可以自己写个简单的函数:
以Python为例:
def round_half_up(num): return int(num + 0.5) print(round_half_up(1.4)) # 输出 1 print(round_half_up(1.5)) # 输出 2 print(round_half_up(2.5)) # 输出 3,符合严格进1的需求
原理很简单:给原数加0.5后取整数部分,刚好实现小数部分≥0.5时进1,否则舍去。
3. 手动判断小数部分
你也可以手动提取小数部分进行判断,逻辑更直观:
def custom_round(num): integer_part = int(num) decimal_part = num - integer_part if decimal_part >= 0.5: return integer_part + 1 else: return integer_part print(custom_round(1.4)) # 输出 1 print(custom_round(1.5)) # 输出 2
内容的提问来源于stack exchange,提问作者Dicky Raambo
相关产品推荐
相关产品推荐

