如何定义数值区间并取整?非连续date.minute的5倍数取整需求
实现分钟数向下取整到最近的5的倍数
你需要的是将任意分钟数转换为小于等于该数值的最大5的倍数,不管分钟值是否连续,这个逻辑都能生效。
核心实现逻辑
用整数除法先对分钟数做整除5的运算,再乘以5,就能直接得到目标值:
rounded_minute = (date.minute // 5) * 5
验证示例
- 当
date.minute = 6:6 // 5 = 1,1 * 5 = 5 - 当
date.minute = 9:9 // 5 = 1,1 * 5 = 5 - 当
date.minute = 10:10 // 5 = 2,2 * 5 = 10 - 当
date.minute = 14:14 // 5 = 2,2 * 5 = 10
为什么原来的方法失效
你之前用的(date.minute + 1) % 5是取余运算,得到的是分钟数加1后除以5的余数,完全不符合“向下取整到5的倍数”的需求,而且这个逻辑还依赖分钟值连续递增,一旦分钟跳变(比如3分钟直接到6分钟),结果就完全错误。而整数除法的方法只基于当前的分钟数值计算,不受连续性影响。
内容的提问来源于stack exchange,提问作者July
相关产品推荐
相关产品推荐

