地板功能浮动数字

时间:2016-06-06 04:32:03

标签: ruby decimal floor

我写了一个ruby代码,按如下方式向下舍入数字:

def round_down(number)
  number.to_s.split(/\./)[0].to_i
end
round_down(1.9)

有人知道更实用的方法吗?

4 个答案:

答案 0 :(得分:8)

Ruby的Math.floor函数已存在于Ruby中:1.9.floor

您在代码中执行的操作实际上是其他内容,它也存在:1.9.truncate

对于正数而言它们是相同的,但对于负数truncate,其行为类似于ceil

  • floor向下舍入
  • ceil四舍五入
  • truncate向零舍入

答案 1 :(得分:1)

您可以使用BigDecimal#round,它有许多不同的rounding modes

require 'bigdecimal'
def round_down(number)
  BigDecimal.new(number, 0).round(0, :down)
end

round_down(1.9)
#=> 1.0

round_down(-1.9)
#> -1.0

答案 2 :(得分:0)

ceil,圆形和截断方法可在ruby中找到

[4] pry(main)> 1.9.round
=> 2
[10] pry(main)> 1.1.round
=> 1
[5] pry(main)> 1.9.ceil
=> 2
[9] pry(main)> 1.1.ceil
=> 2
[6] pry(main)> 1.9.truncate
=> 1
[8] pry(main)> 1.2.truncate
=> 1

答案 3 :(得分:-1)

如果你想重新发明轮子:

1.9.divmod(1).first # => 1
-1.9.divmod(1).first # => -2