En realidad, hay diferentes formas de bajar flotante a int, dependiendo del resultado que desee lograr: (para int i
, float f
)
round (el entero más cercano al flotador dado)
i = Math.round(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -3
nota: esto es, por contrato, igual a (int) Math.floor(f + 0.5f)
truncar (es decir, soltar todo después del punto decimal)
i = (int) f;
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
ceil / floor (un número entero siempre más grande / más pequeño que un valor dado si tiene alguna parte fraccional)
i = (int) Math.ceil(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 3 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
i = (int) Math.floor(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -3 ; f = -2.68 -> i = -3
Para redondear valores positivos , también puede usar (int)(f + 0.5)
, que funciona exactamente como Math.Round
en esos casos (según el documento).
También puede usar Math.rint(f)
para redondear al entero par más cercano ; podría decirse que es útil si espera lidiar con muchos flotadores con una parte fraccionaria estrictamente igual a .5 (tenga en cuenta los posibles problemas de redondeo de IEEE) y desea mantener el promedio del conjunto en su lugar; introducirás otro sesgo, donde los números pares serán más comunes que los impares.
Ver
http://mindprod.com/jgloss/round.html
http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html
para más información y algunos ejemplos.