int total=0, number=0;
float percentage=0.0;
percentage=(number/total)*100;
printf("%.2f",percentage);
Si la valeur du nombre est 50 et le total est 100, je devrais obtenir 50,00 pour cent, du moins c'est ce que je veux. mais je continue d’obtenir 0,00 comme réponse et j’ai essayé de nombreux changements, mais sans succès.
La division entière est tronquée, donc (50/100)
a pour résultat 0. Vous pouvez transtyper en float
(meilleur double
) ou multiplier par 100.0
(pour la précision double
, 100.0f
pour la précision float
) en premier,
double percentage;
// ...
percentage = 100.0*number/total;
// percentage = (double)number/total * 100;
ou
float percentage;
// ...
percentage = (float)number/total * 100;
// percentage = 100.0f*number/total;
Etant donné que l'arithmétique en virgule flottante n'est pas associative, les résultats de 100.0*number/total
et de (double)number/total * 100
peuvent être légèrement différents (il en va de même pour float
), mais il est extrêmement peu probable que les deux premières positions après la virgule soient influencées. tu choisis.
la division entière en C tronque le résultat pour que 50/100
vous donne 0
Si vous voulez obtenir le résultat souhaité, essayez ceci:
((float)number/total)*100
ou
50.0/100
Non, parce que vous utilisez l'expression avec des entiers, vous divisez donc le entier 50 par le entier 100, ce qui donne le entier 0. Tapez l'un d'eux en float
devrait marcher.
Je multiplie régulièrement par 1,0 si je veux virgule flottante, c'est plus facile que de se souvenir des règles.
Vous faites de l'arithmétique entière, donc le résultat est correct. Essayer
percentage=((double)number/total)*100;
En passant, le %f
s'attend à une double
et non à une float
. Par pure chance, c'est converti ici, donc ça marche bien. Mais en général, vous utiliseriez généralement double
comme type à virgule flottante en C de nos jours.
Changez votre code pour:
int total=0, number=0;
float percentage=0.0f;
percentage=((float)number/total)*100f;
printf("%.2f", (double)percentage);
Cela peut vous donner la bonne réponse
#include <stdio.h>
int main()
{
float total=100, number=50;
float percentage;
percentage=(number/total)*100;
printf("%0.2f",percentage);
return 0;
}
Cela devrait vous donner le résultat que vous voulez.
double total = 0;
int number = 0;
float percentage = number / total * 100
printf("%.2f",percentage);
Notez que le premier opérande est un double