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

时间:2009-05-19 19:10:12

标签: ruby-on-rails ruby

我想在Ruby中“封顶”一个数字(在Rails上)。

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

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

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

执行number.round(0) + 1将无效。

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

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

5 个答案:

答案 0 :(得分:78)

尝试ceil

 1.5.ceil => 2
 2.0.ceil => 2

答案 1 :(得分:11)

number.ceil怎么样?

返回大于或等于数字的最小整数。

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

1.5.ceil      #=> 2
2.0.ceil      #=> 2
(-1.5).ceil   #=> -1
(-2.0).ceil   #=> -2

答案 2 :(得分:11)

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

a = 17.00000000000002
17.0
a.ceil
18

答案 3 :(得分:6)

使用Numeric#ceil

irb(main):001:0> 1.5.ceil
=> 2
irb(main):002:0> 2.0.ceil
=> 2
irb(main):003:0> 1.ceil
=> 1

答案 4 :(得分:2)

float.ceil是您想要的正数。请务必考虑负数的行为。也就是说,你想要-1.5“上限”为-1或-2?