2012-06-14 6 views
9

Supongamos que me gustaría redondear float a int en Java.
Por ejemplo,¿Por qué no hay límite (float) en Java?

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

quisiera llamar Math.ceil y Math.round a hacer eso, pero no proporciona java.lang.Mathceil(float). Proporciona solo ceil(double). Así que mi float es promovido a double en silencio, vuelve ceil(double)double y round(double) vuelve long mientras que necesito para reunir a floatint (no long).

Ahora me pregunto por qué java.lang.Math tiene solo ceil(double) y no tiene ceil(float).

+3

¡Advierto con un poco de diversión que los números en sus ejemplos son dobles, no flotantes! –

Respuesta

15

que puede hacer:

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

Si sabe que value es un flotador, entonces puede emitir el resultado de nuevo a float o int.

No tiene sentido que la biblioteca Java proporcione ceil(float) y ceil(double), ya que todos los argumentos flotantes se pueden pasar al método ceil(double) con el mismo resultado.

+1

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

+0

@PeterLawrey: gracias, he actualizado la respuesta ya que la pregunta es acerca de cómo obtener un 'int'. –

+0

Me gustaría evitar las fundiciones. No parece seguro. – Michael

Cuestiones relacionadas