这似乎是可怕的低效率.有人可以给我一个更好的
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′.