No puedo dividir dos números correctamente

int percent = (score/numberOfQuestions)*100; progressText.setText(score+"/"+numberOfQuestions+" "+percent+"%"); 

Devuelve 0% no importa lo que me cansé. He intentado lanzarlo a int, double, float

¿Por qué devuelve 0% para un número como score = 5 numberOfQuestions = 8?

El problema es que dividir dos enteros le da la parte entera del resultado. Así, (score/numberOfQuestions) siempre será 0.
Lo que debes hacer es

 int percent = (score * 100 / numberOfQuestions); 

Entonces el *100 será ejecutado primero, entonces la división le dará el resultado correcto.

Usted necesita lanzar en cualquiera de ellos: –

 float percent = ((float)score/numberOfQuestions)*100; 

Dado que, 5 / 10 ya es 0 .. Casting el resultado final a cualquier tipo le dará sólo 0, como en el código de abajo: –

 float percent = ((float)(score/numberOfQuestions))*100; 

Esto también le dará 0.0 . Puesto que usted está lanzando 0 para flotar. No importa

Compruebe su matemática entero. Su código no funcionará sin casting para valores pequeños, así que simplemente mueva las operaciones alrededor:

 int percent = 100*score/numberOfQuestions; 

Estás usando un int (entero) para almacenar ese porcentaje. Trate de usar float o double lugar de hacer la puntuación y el número de preguntas float o double (Gracias por los comentarios, he omitido totalmente esto …). Si tiene problemas para mostrar el valor, le sugiero que utilice DecimalFormat para formatearlo.

En lugar de usar matemáticas int puras para calcular y almacenar el porcentaje, sugiero otras alternativas si desea tener decimales en su resultado.

score/numberOfQuestions siempre proporcionará un número entre 0 y 1. Usted tiene dos opciones dependiendo de lo exacto que necesita su computación. Para la mayoría de las cosas, puede cambiar la expresión a (score * 100)/numberOfQUestions . Esto le dará dos dígitos de precisión. Un problema ocurriría si la score * 100 desbordaba un int. Dado su nombre de variable, dudo que esto suceda en este caso. La segunda posibilidad sería convertir la expresión en doble para el cálculo.

 int percent=(int)(((double)score/numberOfQuestions)*100); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.