2009-05-19 29 views
40

我想在Ruby中使用「上限」代碼(在Rails上)。如何使用紅寶石代碼和圓形數字

例如,作爲一個函數的結果,我有一個浮點數,但我需要一個int。

我有非常具體的說明,這裏有一些例子:

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

number.round(0) + 1將無法​​正常工作。

我可以寫一個函數來做到這一點,但我相信一個已經存在。

但是,如果它不存在,我應該在哪裏創建我的帽子功能?

回答

78

嘗試ceil

1.5.ceil => 2 
2.0.ceil => 2 
+7

1.1.ceil => 2(另一實例) – Patrick 2014-03-08 04:33:06

11

number.ceil怎麼樣?

這將返回大於或等於數字的最小整數。

要小心,如果你正在使用這個負數,請確保它你所期望的:

1.5.ceil  #=> 2 
2.0.ceil  #=> 2 
(-1.5).ceil #=> -1 
(-2.0).ceil #=> -2 
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 
2

float.ceil是你想要的正數。一定要考慮負數的行爲。也就是說,你是否希望-1.5將「cap」設置爲-1或-2?

11

.ceil是好的,但要記住,在浮子甚至最小的值將導致此:

a = 17.00000000000002 
17.0 
a.ceil 
18