Utilicé la siguiente línea para convertir float a int, pero no es tan precisa como me gustaría:
float a=8.61f;
int b;
b=(int)a;
El resultado es: 8
(Debería ser 9
)
Cuando a = -7.65f
, el resultado es: -7
(Debería ser -8
)
Cuál es la mejor manera de hacerlo ?
java
floating-point
int
Franco
fuente
fuente
Respuestas:
El uso
Math.round()
redondeará el flotador al entero más cercano.fuente
Math.round()
devuelve unint
valor, por lo que el uso de conversión de texto(int)
es redundante(int)foo
es más simple.En realidad, hay diferentes formas de bajar flotante a int, dependiendo del resultado que desee lograr: (para int
i
, floatf
)round (el entero más cercano al flotador dado)
nota: esto es, por contrato, igual a
(int) Math.floor(f + 0.5f)
truncar (es decir, soltar todo después del punto decimal)
ceil / floor (un número entero siempre más grande / más pequeño que un valor dado si tiene alguna parte fraccional)
Para redondear valores positivos , también puede usar
(int)(f + 0.5)
, que funciona exactamente comoMath.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.
fuente
Math.round(value)
redondea el valor al número entero más cercano.Utilizar
fuente
Math.round también devuelve un valor entero, por lo que no necesita escribir a máquina.
fuente
Utilice
Math.round(value)
luego después de escribirlo en entero.fuente
En cuanto a mí, más fácil: (int) (a +.5) // a es un Float. Devuelve el valor redondeado.
No depende de los tipos Java Math.round ()
fuente
-(int) ( PI / 3 )
: prueba tu código con un negativoa
... ¿desde cuándo se-0.5
redondea0
?