Round a ruby float up or down to the nearest 0.05 Round a ruby float up or down to the nearest 0.05 ruby ruby

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.