Ruby怎么圆才更高?

时间:2012-12-11 20:57:17

标签: ruby-on-rails ruby rounding

我怎样才能将红宝石中的圆形更高,因此,最后2个数字为空? 为了exapmle

4233.000001 to 4300
52825 to 52900
627444 to 627500
111999 to 112000

现在我只能通过round(-2)在数学规则中舍入,但是如何只做更高的,并且最后只有2个null?

2 个答案:

答案 0 :(得分:6)

您应该使用ceil

def my_round a
  (a / 100.0).ceil * 100
end

my_round 4233.000001 # => 4300
my_round 52825 # => 52900
my_round 627444 # => 627500
my_round 111999 # => 112000

答案 1 :(得分:3)

使用Sergio的答案,您可以将模块混合到实际的Numeric对象中,以获得更通用的解决方案:

module RoundsUp
  def round_up(ndigits)
    pow_ten = 10 ** -ndigits
    (self / pow_ten.to_f).ceil * pow_ten
  end
end

然后

mynumeric = 262.33
mynumeric.extend(RoundsUp)
mynumeric.round_up(-2) #=> 300

你有一个方法,其行为类似于普通round的任意位数