En realidad, hay diferentes maneras de abatido flotador para INT, en función del resultado que desea alcanzar: (por int i
, flotar f
)
redonda (el número 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)
truncado (es decir dejar 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/piso (un número entero siempre más grande/más pequeño que un valor dado si tiene cualquier parte fraccionaria)
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
Por redondeo valores positivos, también puede simplemente usar (int)(f + 0.5)
, que funciona exactamente como Math.Round
en esos casos (según el documento).
En teoría se podría utilizar Math.rint(f)
para hacer el redondeo, pero rint
no redondea hasta 0,5, redondea hacia arriba o hacia abajo, lo que sea del número entero menor o mayor es par, por lo que es inútil en la mayoría de los casos.
Ver
http://mindprod.com/jgloss/round.html
http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html
para obtener más información y algunos ejemplos.
Debo señalar que acaba de encasillamiento trunca el valor y no realiza ninguna operación de redondeo/revestimiento para el valor. –