web-dev-qa-db-fra.com

Comment diviser 2 int en c?

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);
4
Alex

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().

13
Haris

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.

2
Claudio Cortese

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);
2
LapizLazuli

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.

2
Jaffer Wilson