如何实现按指定scale对浮点数进行向上取整?
Python实现浮点数指定精度向上取整
功能说明:将浮点数向上取整至指定精度,例如输入1.1234(scale=2)时,返回结果为1.13。
参数说明
scale:取整精度参数- 当
scale为正数时,表示保留小数点后的位数 - 当
scale为负数时,表示对小数点前的对应位数进行取整
- 当
实现代码
import math def round_up(num, scale): multiplier = 10 ** scale return math.ceil(num * multiplier) / multiplier
验证示例
# 正数scale场景验证 assert round_up(0.12345, 3) == 0.124 assert round_up(1554.3706592276444, 0) == 1555 assert round_up(1554.3706592276444, 1) == 1554.4 assert round_up(1554.3706592276444, 2) == 1554.38 assert round_up(12345.123456789, 8) == 12345.12345679 # 负数scale场景验证 assert round_up(12345.123456789, -2) == 12400 assert round_up(12345.123456789, -3) == 13000 assert round_up(12345.123456789, -4) == 20000
原理说明
核心思路是通过缩放倍数将目标取整位转换为整数位:
- 计算
10^scale作为缩放因子,将原数放大后,需要向上取整的部分会变成整数部分 - 使用
math.ceil()对放大后的数执行向上取整 - 最后将取整结果除以缩放因子,还原到原精度
内容的提问来源于stack exchange,提问作者yEmreAk.com
相关产品推荐
相关产品推荐

