Necesito convertir un doble en int en Java, pero el valor numérico siempre debe redondearse. es decir, 99.99999999 -> 99¿Cómo convertir un doble a un int en Java redondeándolo hacia abajo?
Respuesta
Casting a un int elimina implícitamente cualquier decimal. No hay necesidad de llamar Math.floor() (suponiendo que los números positivos)
Basta con encasillado (int), por ejemplo:
System.out.println((int)(99.9999)); // Prints 99
Dicho esto, que sí tiene un comportamiento diferente de Math.floor
que se redondea hacia el negativo infinito (@ Chris Wong)
Tenga en cuenta que 'Math.floor' * does * produce un resultado diferente para números negativos que un simple encasillado. – Joey
Depende de lo que el OP significa "redondear hacia abajo". El elenco lo redondea "hacia abajo" hacia cero, mientras que Math.floor redondea hacia el infinito negativo. –
También tenga en cuenta que un int no puede representar todos los posibles valores enteros que un doble puede. Si desea truncar un valor de doble precisión, entonces conviértalo en un valor entero de 64 bits como long. 'System.out.println ((long) (9.9999e300));' –
Esto funciona bien int i = (int) dbl;
(int) 99,99999
Será 99. Al lanzar un doble a un int no redonda, que va a desechar la parte fraccionaria.
+1 por mencionar el truncamiento. –
para lanzar un doble a un int y tiene que ser redondeado al número entero más cercano (es decir, a diferencia de la típica (int)(1.8)
y (int)(1.2)
, que tanto "redondear hacia abajo" hacia 0 y volver 1
) , simplemente agregue 0.5 al double
que va a encasillar en un int
.
Por ejemplo, si tenemos
double a = 1.2;
double b = 1.8;
Entonces las siguientes expresiones encasillamiento para X e Y, y devolverá los valores descendentes redondeado (x = 1
y y = 1
):
int x = (int)(a); // This equals (int)(1.2) --> 1
int y = (int)(b); // This equals (int)(1.8) --> 1
Pero añadiendo 0.5 a cada uno, obtendremos el resultado entero redondeado-al-más cercano que podemos desear en algunos casos (x = 1
y 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 nota pequeña, este método también permite controlar el umbrala la que el double
se redondea hacia arriba o hacia abajo a (int)
encasillamiento.
(int)(a + 0.8);
a typecast. Esto solo redondeará hasta (int)a + 1
siempre que los valores decimales sean mayores o iguales a 0.2. Es decir, al agregar 0.8 al double
inmediatamente antes del encasillado, 10.15 y 10.03 se redondearán a 10 al (int)
encasillar, pero 10.23 y 10.7 se redondearán a 11.
Tiene toda la razón, no es así. Vi que este hilo aparece cuando busqué "Java int typecast double" y pensé que alguien que buscara una forma de redondear hacia arriba/abajo directamente con el tipo de conversión (int) podría usar esto. Esto no se publica usando una cuenta de stackoverflow (así que no estoy tratando de aumentar mi reputación, si eso se toma en serio aquí), solo intento ayudar a difundir un truco genial que uso con bastante frecuencia. :) ¡Salud! – JavaDrip
Bien, pero recuerda que esto solo funciona con ** positivos ** dobles. Por ejemplo, si redondeas -0.8 con este truco, entonces el código 'System.out.println (" "+ (int) (- 0.8d + 0.5))' imprime 0, en lugar de -1 como se esperaba –
new Double(99.9999).intValue()
tratar con esto, Esto es simple
double x= 20.22889909008;
int a = (int) x;
this will return a=20
o tratar con esto: -
Double x = 20.22889909008;
Integer a = x.intValue();
this will return a=20
o tratar con esto: -
double x= 20.22889909008;
System.out.println("===="+(int)x);
this will return ===20
puede ser este código ayudarte.
- 1. convertir doble a int
- 2. Convertir un doble a un int en Javascript sin redondeo
- 3. Convertir doble para Int, redondeado a la baja
- 4. ¿Cómo convertir de forma segura este doble en un int?
- 5. Mover un elemento hacia arriba o hacia abajo a seleccionar
- 6. Redondear un doble a int
- 7. En Kotlin ¿Cómo puedo convertir un int? a un Int
- 8. ¿Cómo desplazo un RichTextBox hacia abajo?
- 9. ¿Cómo puedo convertir un largo a int en Java?
- 10. Java: charAt convertir a int?
- 11. ¿Cómo convertir bytes a un doble?
- 12. Cómo convertir un NSInteger a un int?
- 13. ¿Cómo convertir un Enum a un int?
- 14. Cómo convertir flotador a int en Java
- 15. Convirtiendo un doble en int en C#
- 16. ¿Cómo convertir un doble a NSInteger?
- 17. ¿Cómo convertir un doble a hexadecimal?
- 18. jQuery Anteponer un DIV deslizándolo hacia abajo
- 19. Cómo convertir el número de Int a Número doble?
- 20. Usando TDD: "arriba hacia abajo" vs. "abajo hacia arriba"
- 21. Cómo convertir un int a una cadena?
- 22. Cómo se hace un char * a un int o un doble en C
- 23. ¿Cómo leer un archivo de abajo hacia arriba en Ruby?
- 24. ¿Diseño de arriba hacia abajo o de abajo hacia arriba?
- 25. Cómo desplazarse hacia abajo - JQuery
- 26. Cómo convertir int * a int
- 27. Java: ¿Cómo accedes a un método de clase padre dos niveles hacia abajo?
- 28. Convertir hexadecimal a doble
- 29. F # tubería hacia adelante para convertir de int a bigint
- 30. Cómo convertir un valor int a cadena en Go?
posible duplicado de [Cómo convertir float a int con Java] (http://stackoverflow.com/questions/1295424/how-to-convert-float-to-int-with-java) –
Creo que flota y los dobles son tipos de datos diferentes en Java. – badpanda
Creo que están demasiado cerca porque ambos son primitivos y tipos de coma flotante. Las respuestas son las mismas y es muy probable que sigan siendo así. –