如何修改Python函数实现浮点数向下取整至最接近的0.25?
修改函数实现向下去整到指定步长
把原来的round()换成math.floor()就能实现始终向下取整的需求,math.floor()会返回小于等于输入值的最大整数,刚好匹配你要的“取小于该浮点数的最接近0.25值”的逻辑。
修改后的代码如下:
import math def rounder(x, y=0.25): return y * math.floor(x / y)
测试你给出的例子:
- 输入
1.80:1.80 / 0.25 = 7.2,math.floor(7.2)得到7,7 * 0.25 = 1.75,符合要求 - 输入
1.99:1.99 / 0.25 = 7.96,math.floor(7.96)得到7,7 * 0.25 = 1.75,符合要求
补充:处理刚好是步长整数倍的情况
如果你的需求是严格小于原浮点数的最接近0.25值(比如输入2.0时要返回1.75,而不是2.0),可以给函数加个判断:
import math def rounder(x, y=0.25): quotient = x / y if quotient.is_integer(): return y * (quotient - 1) return y * math.floor(quotient)
内容的提问来源于stack exchange,提问作者zsayle
相关产品推荐
相关产品推荐

