这似乎是可怕的低效率.有人可以给我一个更好的
Ruby方式.
@H_404_2@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
解决方法
@H_404_2@class Float
def round_point5
(self*2).round / 2.0
end
end
一个经典的问题:这意味着你使用不同的基数进行整数舍入.您可以用任何其他号码替换’2′.