unity studio float convertir java floating-point int

java - studio - float to int python



Cómo convertir float a int con Java (6)

Usé la siguiente línea para convertir float a int, pero no es tan preciso 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 ?


El uso de Math.round() redondeará el flotante al entero más cercano.


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 ()


En realidad, hay diferentes formas de reducir el flujo 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 entero siempre mayor / menor que un valor dado si tiene alguna 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

Para redondear valores positivos , también puede usar (int)(f + 0.5) , que funciona exactamente como Math.Round en esos casos (según doc).

En teoría, podría usar Math.rint(f) para hacer el redondeo, pero el rint no redondea 0.5, lo redondea hacia arriba o hacia abajo, cualquiera que sea el número entero más bajo o más alto, 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 más información y algunos ejemplos.


Math.round también devuelve un valor entero, por lo que no es necesario realizar la conversión.

int b = Math.round(float a);


Use Math.round(value) luego, después del tipo, Math.round(value) a entero.

float a = 8.61f; int b = (int)Math.round(a);


Math.round(value) redondea el valor al número entero más cercano.

Utilizar

1) b=(int)(Math.round(a)); 2) a=Math.round(a); b=(int)a;