四舍五入至最接近的0.25,无银行家';Python 3中的s舍入

四舍五入至最接近的0.25,无银行家';Python 3中的s舍入,python,python-3.x,decimal,rounding,Python,Python 3.x,Decimal,Rounding,我想把一系列数字四舍五入如下: 0 -> 0 0.1 -> 0 0.125 -> 0.25 0.25 -> 0.25 我听说我可以使用圆形(x*4)/4找到最接近的0.25单位。但是,使用此函数在边界处会出现一些问题 0.125 -> 0 (with round(x*4)/4) 我是否可以正确地进行上述四舍五入?谢谢只需乘以4,四舍五入,然后除以4。十进制模块提供了对四舍五入行为的更多控制。特别是,如果存在最近的选项,舍入模式将舍入到最近的选项,如果出现平局,舍

我想把一系列数字四舍五入如下:

0 -> 0
0.1 -> 0
0.125 -> 0.25
0.25 -> 0.25
我听说我可以使用圆形(x*4)/4找到最接近的0.25单位。但是,使用此函数在边界处会出现一些问题

0.125 -> 0 (with round(x*4)/4)

我是否可以正确地进行上述四舍五入?谢谢

只需乘以4,四舍五入,然后除以4。

十进制模块提供了对四舍五入行为的更多控制。特别是,如果存在最近的选项,舍入模式将舍入到最近的选项,如果出现平局,舍入模式将舍入到零,这与您想要的匹配:

>>> 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')

@我不知道这是重复的。并不是每个人都可以每次都搜索每个问题。我确实标记了大量重复,但不能期望看到100%的重复。幸好你看到了。咬紧牙关,这件事是我的责任,事实上不是一个傻瓜。再说一次,建议仍然有效。。。有点?无论如何,您可能需要修改此答案以解决OP的问题。@coldspeed:这些问题无法处理发问者正在寻找的取整模式行为(似乎是取整模式)。@user2357112问题框架不好,因此我不想重新打开它。@coldspeed:通过新的编辑,现在看起来更清晰了。