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 unintvalor, por lo que el uso de conversión de texto(int)es redundante(int)fooes 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.Rounden 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.5redondea0?