我写了一个ruby代码,按如下方式向下舍入数字:
def round_down(number)
number.to_s.split(/\./)[0].to_i
end
round_down(1.9)
有人知道更实用的方法吗?
答案 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