我想效仿this function。我想將浮點數舍入到最接近的0.05的倍數(或者通常是最接近的倍數)。將四捨五入的浮點數湊整到最接近的0.05
我想這一點:
>>> my_magical_rounding(1.29, 0.05)
1.25
>>> my_magical_rounding(1.30, 0.05)
1.30
我可以這樣做:
import math
def my_magical_rounding(n, r):
return n - math.fmod(n, r)
>>> my_magical_rounding(1.27, 0.05)
1.25 # Yay!
>>> my_magical_rounding(1.30, 0.05)
1.25 # Boo! I want 1.30.
大概是由於浮點舍入。
我可以把一些特殊情況檢查,看看n
是「足夠接近」的r
倍數,而不是做減法,這可能會起作用,但有沒有更好的方法?
或者是this strategy我最好的選擇?
嘗試了這一點:) 回報(N +( r-(n%r))) – 2015-02-10 07:04:35
你想讓'my_magical_rounding(1.29,0.05)'給出什麼? '1.30'還是'1.25'? – dopstar 2015-02-10 09:55:31
1.25。編輯該問題以使其更加清晰。 – 2015-02-10 22:32:42