¿Cómo convertir un doble a un int en Java redondeándolo hacia abajo?

Necesito lanzar un doble a un int en Java, pero el valor numérico siempre debe redondearse. es decir, 99.99999999 -> 99

Casting a un int elimina implícitamente cualquier decimal. No es necesario llamar a Math.floor () (asumiendo números positivos)

Simplemente encasilla con (int), por ejemplo:

System.out.println((int)(99.9999)); // Prints 99 

Dicho esto, tiene un comportamiento diferente de Math.floor que redondea hacia el infinito negativo (@Chris Wong)

Para convertir un doble en un int y hacer que se redondee al entero más cercano (es decir, a diferencia del típico (int)(1.8) y (int)(1.2) , que “redondeará” hacia 0 y devolverá 1 ), simplemente agregue 0.5 al double que va a encasillar a un int .

Por ejemplo, si tenemos

 double a = 1.2; double b = 1.8; 

Luego, las siguientes expresiones de encasillamiento para xey devuelven los valores redondeados ( x = 1 e y = 1 ):

 int x = (int)(a); // This equals (int)(1.2) --> 1 int y = (int)(b); // This equals (int)(1.8) --> 1 

Pero al agregar 0.5 a cada uno, obtendremos el resultado entero redondeado al más cercano que podamos desear en algunos casos ( x = 1 y = 2 ):

 int x = (int)(a + 0.5); // This equals (int)(1.8) --> 1 int y = (int)(b + 0.5); // This equals (int)(2.3) --> 2 

Como una pequeña nota , este método también le permite controlar el umbral en el que el double se redondea hacia arriba o hacia abajo en la conversión de tipo (int) .

 (int)(a + 0.8); 

a encasillar Esto solo redondeará hasta (int)a + 1 siempre que los valores decimales sean mayores o iguales a 0.2. Es decir, al sumr 0.8 al double inmediatamente antes del encasillado, 10.15 y 10.03 se redondearán a 10 al encasillar (int) , pero 10.23 y 10.7 se redondearán a 11.

(int) 99.99999

Será 99. Lanzar un doble a un int no redondea, descartará la parte de fracción.

 Math.floor(n) 

donde n es un doble. Parece que esto realmente devolverá un doble, así que asegúrese de encasillarlo después.

Esto funciona bien int i = (int) dbl;

new Double(99.9999).intValue()

intenta con esto, esto es simple

 double x= 20.22889909008; int a = (int) x; this will return a=20 

o prueba con esto: –

 Double x = 20.22889909008; Integer a = x.intValue(); this will return a=20 

o prueba con esto: –

 double x= 20.22889909008; System.out.println("===="+(int)x); this will return ===20 

puede ser que estos códigos te ayuden

Intenta usar Math.floor.