Este equipo redactor ha pasado horas buscando para dar espuestas a tu pregunta, te compartimos la resolución y deseamos serte de mucha ayuda.
Solución:
La división de enteros se trunca, por lo que (50/100)
da como resultado 0. Puedes lanzar a float
(mejor double
) o multiplicar con 100.0
(por double
precisión, 100.0f
por float
precisión) primero,
double percentage;
// ...
percentage = 100.0*number/total;
// percentage = (double)number/total * 100;
o
float percentage;
// ...
percentage = (float)number/total * 100;
// percentage = 100.0f*number/total;
Dado que la aritmética de punto flotante no es asociativa, los resultados de 100.0*number/total
y (double)number/total * 100
puede ser ligeramente diferente (lo mismo vale para float
), pero es muy poco probable que influya en los dos primeros lugares después del punto decimal, por lo que probablemente no importe la forma que elija.
la división de enteros en C trunca el resultado por lo que 50/100
Te regalaré 0
Si desea obtener el resultado deseado, intente esto:
((float)number/total)*100
o
50.0/100
No, porque haces la expresión usando números enteros, entonces divides el entero 50 por el entero 100, lo que resulta en el entero 0. Escriba cast uno de ellos a un float
y debería funcionar.
Reseñas y valoraciones del tutorial
Te invitamos a proteger nuestra misión poniendo un comentario o puntuándolo te lo agradecemos.