2009-05-19 13 views
40

Vorrei "limitare" un numero in Ruby (su Rails).Come limitare e arrotondare il numero in rubino

Ad esempio, ho, come risultato di una funzione, un float ma ho bisogno di un int.

devo istruzioni molto specifiche, ecco alcuni esempi:

Se ottengo 1.5 voglio 2 ma se ottengo 2.0 voglio 2 (e non 3)

Facendo number.round(0) + 1 non funzionerà.

Potrei scrivere una funzione per farlo ma sono sicuro che ne esiste già una.

Se, tuttavia, non esiste, dove dovrei creare la funzione cap?

risposta

78

Prova ceil:

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

1.1.ceil => 2 (altro esempio) – Patrick

11

Che ne dici di number.ceil?

Restituisce il numero intero più piccolo maggiore o uguale al numero.

Fate attenzione se si utilizza questo con i numeri negativi, assicurarsi che fa quello che ci si aspetta:

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

Uso 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 è quello che vuoi per i numeri positivi. Assicurati di considerare il comportamento per i numeri negativi. Cioè, vuoi -1,5 per "limitare" a -1 o -2?

11

.ceil è buono, ma ricordate, anche il valore più piccolo float causerà questo:

a = 17.00000000000002 
17.0 
a.ceil 
18 
Problemi correlati