Round a ruby float up or down to the nearest 0.05
[2.36363636363636, 4.567563, 1.23456646544846, 10.5857447736].map do |x| (x*20).round / 20.0end#=> [2.35, 4.55, 1.25, 10.6]
Check this link out, I think it's what you need.Ruby rounding
class Float def round_to(x) (self * 10**x).round.to_f / 10**x end def ceil_to(x) (self * 10**x).ceil.to_f / 10**x end def floor_to(x) (self * 10**x).floor.to_f / 10**x endend
In general the algorithm for “rounding to the nearest x” is:
round(x / precision)) * precision
Sometimes is better to multiply by 1 / precision
because it is an integer (and thus it works a bit faster):
round(x * (1 / precision)) / (1 / precision)
In your case that would be:
round(x * (1 / 0.05)) / (1 / 0.05)
which would evaluate to:
round(x * 20) / 20;
I don’t know any Python, though, so the syntax might not be correct but I’m sure you can figure it out.