2012-06-14 16 views
9

Supponiamo che mi piacerebbe arrotondare float a int in Java.
Per esempio,Perché non c'è ceil (float) in Java?

roundUp(0.2) = 1 
roundUp(0.7) = 1 
roundUp(1.3) = 2 
... 

vorrei chiamare Math.ceil e Math.round di farlo, ma java.lang.Math non fornisce ceil(float). Fornisce solo ceil(double). Quindi il mio float è promosso a double in silenzio, ceil(double) rendimenti double e round(double) rendimenti long mentre ho bisogno di arrotondare fino a floatint (non long).

Ora mi chiedo perché lo java.lang.Math abbia solo ceil(double) e non abbia ceil(float).

+3

Nota con un po 'di divertimento che i numeri nei tuoi esempi sono doppi, non galleggianti! –

risposta

15

si può fare:

value = (int) Math.ceil(value); 

Se si sa che value è un float, allora si può lanciare il risultato di nuovo al float o int.

Non ha senso che la libreria Java fornisca sia ceil(float) e ceil(double) poiché tutti gli argomenti mobili possono essere passati al metodo ceil(double) con lo stesso risultato.

+1

+1 o 'int intValue = (int) Math.ceil (valore);' –

+0

@PeterLawrey: grazie, ho aggiornato la risposta in quanto la domanda riguarda effettivamente l'ottenimento di un 'int'. –

+0

Vorrei evitare i getti. Non sembra sicuro. – Michael

Problemi correlati