一个Ruby实现十进制小数到最接近的0.5的方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

这看起来很可怕,效率低下。有人可以给我一个更好的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

用户回答回答于

将数字乘以两。

整数到整数。

除以二。

(x * 2.0).round / 2.0

在一般形式中,乘想要的整个数字的缺口数量

(x * notches).round / notches

扫码关注云+社区