Python中如何实现Max向上、Min向下取最近10的倍数
问题根源
round(num, -1)采用四舍六入五成双的舍入规则,仅会取距离原值最近的10的倍数,不会强制结果大于或小于原值,因此示例中8.87895014会被舍入到距离更近的10.0,不满足Min值需向下取整、结果小于自身的要求。
修正实现
借助numpy自带的向上取整np.ceil、向下取整np.floor方法,通过缩放数值即可实现符合规则的取整:
- Max值处理:先将数值除以10做向上取整,再乘10,得到大于原值的最近10的倍数
- Min值处理:先将数值除以10做向下取整,再乘10,得到小于原值的最近10的倍数
完整修正代码如下:
import numpy as np Max = [99.91540553] Min = [8.87895014] Amax = np.ceil(Max[0] / 10) * 10 Amin = np.floor(Min[0] / 10) * 10
运行结果
执行代码后得到的结果完全符合预期:
Amax = 100.0 Amin = 0.0
如果需要整数类型的Amax,直接用int()做类型转换即可:Amax = int(np.ceil(Max[0] / 10) * 10),转换后Amax的值为整数100。
内容的提问来源于stack exchange,提问作者Wiz123
相关产品推荐
相关产品推荐

