如何在红宝石中上限和舍入数字

Art*_*hur 40 ruby ruby-on-rails

我想在Ruby中"封顶"一个数字(在Rails上).

例如,作为函数的结果,我有一个浮点数,但我需要一个int.

我有非常具体的说明,这里有一些例子:

如果我得到1.5我想2但如果我得到2.0我想要2(而不是3)

number.round(0) + 1不行.

我可以编写一个函数来执行此操作,但我确信已经存在.

但是,如果它不存在,我应该在哪里创建我的上限函数?

gno*_*ice 78

尝试ceil:

 1.5.ceil => 2
 2.0.ceil => 2
Run Code Online (Sandbox Code Playgroud)

  • 1.1.ceil => 2(另一个例子) (7认同)

Pat*_*ald 11

怎么样number.ceil

这将返回大于或等于number的最小Integer.

如果您使用负数,请小心,确保它符合您的预期:

1.5.ceil      #=> 2
2.0.ceil      #=> 2
(-1.5).ceil   #=> -1
(-2.0).ceil   #=> -2
Run Code Online (Sandbox Code Playgroud)


mes*_*600 11

.ceil很好,但请记住,即使float中的最小值也会导致:

a = 17.00000000000002
17.0
a.ceil
18
Run Code Online (Sandbox Code Playgroud)


Pes*_*sto 6

使用数字#ceil:

irb(main):001:0> 1.5.ceil
=> 2
irb(main):002:0> 2.0.ceil
=> 2
irb(main):003:0> 1.ceil
=> 1
Run Code Online (Sandbox Code Playgroud)