一个更好的Ruby实现的圆十进制到最接近的0.5

前端之家收集整理的这篇文章主要介绍了一个更好的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

解决方法

class Float
  def round_point5
    (self*2).round / 2.0
  end
end

一个经典的问题:这意味着你使用不同的基数进行整数舍入.您可以用任何其他号码替换’2′.

猜你在找的Ruby相关文章