圆形浮动到Ruby最近的四分之一

Tom*_*ond 8 ruby floating-point ruby-on-rails

我正在使用Ruby on Rails应用程序中的外部api.我需要在花车发送给这家公司,但他们只接受像值1.0,1.25,1.5,1.75,2.0,等.

我可能有像1.34或的价值1.80.理想情况下,我需要将它们四舍五入到最近0.25.实现这一目标的最佳方法是什么?如果我这样做1.34.round(0)会给我1.0比我需要的更低的东西.

谢谢!

And*_*eko 15

(1.27 * 4).round / 4.0
#=> 1.25
Run Code Online (Sandbox Code Playgroud)

如果你经常使用它,那么修补这个Float类是非常有意义的,这样可以简化用法:

class Float
  def round_to_quarter
    (self * 4).round / 4.0
  end
end
1.27.round_to_quarter
#=> 1.25
1.52.round_to_quarter
#=> 1.5
1.80.round_to_quarter
#=> 1.75
1.88.round_to_quarter
#=> 2.0
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案.猴子修补在这里更有意义. (2认同)