我想围绕一系列这样的数字:
0 -> 0
0.1 -> 0
0.125 -> 0.25
0.25 -> 0.25
我听说我可以使用round(x * 4)/ 4来找到最接近的0.25单位。但是,在此功能的边界会出现一些问题
0.125 -> 0 (with round(x*4)/4)
无论如何我可以正确地进行上述舍入吗?感谢
答案 0 :(得分:4)
简单地乘以4,然后除以4。
答案 1 :(得分:3)
decimal
模块可以更好地控制舍入行为。特别是,当有最近的选项时,ROUND_HALF_UP
舍入模式会舍入到最近的选项,并且当存在平局时,将舍入为零,匹配您想要的值:
>>> from decimal import Decimal, ROUND_HALF_UP
>>> def round_your_way(d):
... return (d*4).quantize(Decimal('1'), rounding=ROUND_HALF_UP)/4
...
>>> round_your_way(Decimal('0.125'))
Decimal('0.25')
>>> round_your_way(Decimal('0.1'))
Decimal('0')
>>> round_your_way(Decimal('0.25'))
Decimal('0.25')