Лучшая реализация Ruby с округлением десятичных дробей до ближайшего 0,5

Это кажется ужасно неэффективным. Может ли кто-нибудь дать мне лучший способ Ruby.

def round_value
  x = (self.value*10).round/10.0 # rounds to two decimal places
  r = x.modulo(x.floor) # finds remainder
  f = x.floor

  self.value = case
  when r.between?(0, 0.25)
    f
  when r.between?(0.26, 0.75)
    f+0.5
  when r.between?(0.76, 0.99)
    f+1.0
  end
end
20
задан Steve McKinney 1 October 2010 в 07:18
поделиться