residuo realizar obtener numeros float entero divisiones decimales java floating-point integer-division

obtener - realizar divisiones en java



¿Por qué la división de dos enteros devuelve 0.0 en Java? (6)

Esta pregunta ya tiene una respuesta aquí:

int totalOptCount = 500; int totalRespCount=1500; float percentage =(float)(totalOptCount/totalRespCount);

¿Por qué siempre devuelve el valor 0.0? ¿También quiero formatear esto en formato 00.00 y convertirlo en una cadena?


(totalOptCount/totalRespCount)

aquí tanto el dividendo como el divisor son de tipo int que significa que solo permitirán valores enteros y la respuesta de dicha ecuación siempre será un entero.

si rompo esto será algo así como a continuación

(double)(500/1500)

De acuerdo con el cálculo real, 500/1500 le dará 0.33333 pero el compilador convertirá esto en literal entero porque ambos operandos son de tipo int

(double)(0)


El compilador recibe una instrucción para convertir este valor 0 al doble, por lo que obtuviste 0.0 como resultado

0.0

y luego puede cambiar el resultado a cualquier formato según lo sugiera @Zach Janicki.

tenga en cuenta si ambos operandos son del mismo tipo que el resultado será del mismo tipo también.


La división entera (que incluye long, short, byte, char, int) en Java siempre devuelve un int (o long, si uno de los parámetros es largo), redondeando hacia cero. Su conversión ocurre después de este cálculo.

(La pregunta de formato ya está respondida por las otras respuestas; alternativamente, también puede ver java.text.NumberFormat, especialmente java.text.DecimalFormat).


Porque la conversión a flotación ocurre después de que la división ha sido hecha. Necesitas:

float percentage = ((float) totalOptCount) / totalRespCount;

Debería poder formatear usando algo como:

String str = String.format("%2.02f", percentage);


Si está utilizando valores int , usar un double puede ser una mejor opción y tener menos errores de redondeo. float puede representar valores int sin error de hasta ~ 16 millones. double puede representar con precisión todos los valores int .

double percentage =(double) totalOptCount / totalRespCount;

Los porcentajes se multiplican por 100, lo que significa que puede soltar el reparto.

double percentage = 100.0 * totalOptCount / totalRespCount;


para formatear un doble e imprimir como un porcentaje, puede usar el uso

System.out.println(new DecimalFormat("##.##").format(yourDouble) + "%"));


String.format("%2.02f", (float)totalOptCount/totalRespCount);