我如何总是在Ruby中舍入一个数字?

时间:2017-07-20 23:47:34

标签: ruby numbers integer fixnum

例如,如果我想要987等于" 900"。

2 个答案:

答案 0 :(得分:8)

n = 987
m = 2

n.floor(-m)
  #=> 900

请参阅Integer#floor:“当精度为负时,返回的值是一个至少为ndigits.abs尾随零的整数。”

(n / 10**m) * 10**m
  #=> 900

答案 1 :(得分:1)

您可以使用对数来计算除以的最佳倍数。

  def round_down(n)
    log = Math::log10(n)
    multip = 10 ** log.to_i
    return (n / multip).to_i * multip 
  end

  [4, 9, 19, 59, 101, 201, 1500, 102000].each { |x|
     rounded = round_down(x)
     puts "#{x} -> #{rounded}"
  }

结果:

4 -> 4
9 -> 9
19 -> 10
59 -> 50
101 -> 100
201 -> 200
1500 -> 1000
102000 -> 100000

当您需要计算图表的偶数间距时,这个技巧非常方便。