veux diviser 2 nombres et obtenir le résultat comme ceci:
5/2 = 2,50
Mais il n'en produit que 2.
Je ne sais pas maintenant ce que je fais mal.
Voici mon code:
int a;
int b;
int c;
printf("First num\n");
scanf("%d", &a);
printf("Second num\n");
scanf("%d", &b);
c = a / b;
printf("%d", c);
Vous avez besoin d'une variable double
pour stocker le résultat. int
ne stocke que des entiers. De plus, vous devez également transtyper les autres variables avant d'effectuer la division.
Faites quelque chose comme ça
double c;
.
.
.
c = (double)a / (double)b;
printf("%f", c);
REMARQUE:
Vous n'avez pas besoin des &
Dans les instructions printf()
.
Vous devez utiliser les variables float
ou double
, pas celles de int
(entier). Notez également qu'une division entre deux entiers conduira à un résultat entier, tandis qu'une division entre un float
/double
et un entier conduira à un résultat flottant. C'est parce que C promeut implicitement cet entier en float
.
Par exemple:
5/2 = 2
5/2.0f = 2.5f
Noter la .0f
, cela signifie en fait que nous divisons avec un flotteur.
Pour éviter le transtypage en float, vous pouvez directement utiliser scanf avec l'indicateur% f.
float a;
float b;
float c;
printf("First number\n");
scanf("%f", &a);
printf("Second number\n");
scanf("%f", &b);
c = a / b;
printf("%f", c);
Le signe "/" est pour la division. Chaque fois qu'en langage C, vous divisez un entier par un entier et stockez les données dans un entier, la réponse en sortie est un entier. Par exemple
int a = 3, b = 2, c = 0;
c = a/b; // That is c = 3/2;
printf("%d", c);
Le sortie reçu est: 1
La raison en est le type de variable que vous avez utilisé, c'est-à-dire un entier (int
)
Chaque fois qu'un entier est utilisé pour stocker la sortie, le résultat sera stocké sous forme d'entier et non de valeur décimale.
Pour stocker les résultats décimaux, le langage C fournit float
, double
, long float
et long double
.
Chaque fois que vous effectuez une opération et souhaitez une sortie en décimal, vous pouvez utiliser les types de données mentionnés ci-dessus pour votre variable de stockage résultante. Par exemple
int a = 3, b = 2;
float c = 0.0;
c = (float)a/b; // That is c = 3/2;
printf("%.1f", c);
Le sortie reçu: 1,5
Donc, je pense que cela vous aidera à comprendre le concept.
Rappelez-vous : Lorsque vous utilisez float
, le spécificateur d'accès est %f
. Vous devez convertir votre réponse en float
, comme je l'ai fait, puis la réponse sera reflétée.