首页 > 解决方案 > 向上舍入到最接近的 0.05

问题描述

我想将一个数字四舍五入到小数点后两位,例如:

16.34 -> 16.35
16.36 -> 16.40
16.31 -> 16.35
16.35 -> 16.35 -- NOT ROUND
16.40 -> 16.40 -- NOT ROUND

如果数字以 1-4 结束,则舍入 5,如果数字 6-9,则舍入为 0 我如何舍入 = 谢谢你

标签: pythonmathrounding

解决方案


将数字乘以 20,四舍五入math.ceil,然后除以 20。

例如:

>>> from math import ceil
>>> for n in (i/100 for i in range(10, 20)):
...     m = ceil(n*20) / 20
...     print('{:.2f} -> {:.2f}'.format(n, m))
...
0.10 -> 0.10
0.11 -> 0.15
0.12 -> 0.15
0.13 -> 0.15
0.14 -> 0.15
0.15 -> 0.15
0.16 -> 0.20
0.17 -> 0.20
0.18 -> 0.20
0.19 -> 0.20

[归功于Jan StránskýThomas Jager对解释该技术的评论]


推荐阅读