浮动数字的 floor 函数
Floor function to float numbers
我写了一个 ruby 代码,将数字向下舍入如下:
def round_down(number)
number.to_s.split(/\./)[0].to_i
end
round_down(1.9)
有人知道实现此目的的更 ruby 方法吗?
JavaScript 的 Math.floor
函数已经存在于 Ruby 中:1.9.floor
你在你的代码中所做的实际上是别的东西,它也存在:1.9.truncate
对于正数它们是相同的,但是对于负数 truncate
表现得像 ceil
:
floor
四舍五入
ceil
四舍五入
truncate
向零舍入
如果你想重新发明轮子:
1.9.divmod(1).first # => 1
-1.9.divmod(1).first # => -2
ceil、round 和 truncate 方法在 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
您可以使用 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
我写了一个 ruby 代码,将数字向下舍入如下:
def round_down(number)
number.to_s.split(/\./)[0].to_i
end
round_down(1.9)
有人知道实现此目的的更 ruby 方法吗?
JavaScript 的 Math.floor
函数已经存在于 Ruby 中:1.9.floor
你在你的代码中所做的实际上是别的东西,它也存在:1.9.truncate
对于正数它们是相同的,但是对于负数 truncate
表现得像 ceil
:
floor
四舍五入ceil
四舍五入truncate
向零舍入
如果你想重新发明轮子:
1.9.divmod(1).first # => 1
-1.9.divmod(1).first # => -2
ceil、round 和 truncate 方法在 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
您可以使用 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