我想在Ruby中“封顶”一个数字(在Rails上)。
例如,作为函数的结果,我有一个浮点数,但我需要一个int。
我有非常具体的说明,这里有一些例子:
如果我得到1.5
我想要2
,但如果我得到2.0
我想要2
(而不是3
)
执行number.round(0) + 1
将无效。
我可以编写一个函数来执行此操作,但我确信已经存在。
但是,如果它不存在,我应该在哪里创建我的上限函数?
答案 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?