Bonjour,
J'ai un petit soucis de compréhension sur la façon dont son stockées les variables dans la mémoire vive. A priori si je créer un variable de type long, je ne devrais pas pouvoir stocker de nombre décimal, or avec un code tout simple j'obtient une valeur décimale dans une variable de type long.![]()
Voici le code :
et voici ce qui s'affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 double Nombre3 = 0; double Nombre4 = 0; double ResultatDivision = 0; long ResultatDivisionEntier = 0; printf("Faisons une division de nombres decimaux \nTaper le numerateur :");scanf("%lf", &Nombre3); printf("Taper le denominateur :"); scanf("%lf", &Nombre4); ResultatDivision = Nombre3 / Nombre4 ; ResultatDivisionEntier = Nombre3 / Nombre4 ; printf("Le resultat est %lf \n", ResultatDivision); printf("Le resultat (partie entiere) est %lf", ResultatDivisionEntier);
Comment est-ce possible d'avoir "Le resultat (partie entiere) est 2.500000", alors que ResultatDivisionEntier est un long ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Faisons une division de nombres decimaux Taper le numerateur : 5 Taper le denominateur : 2 Le resultat est 2.500000 Le resultat (partie entiere) est 2.500000
J'ai essayé en simplifiant (oui encore) le programme et en mettant que la partie concernant le resultat entier. Ca donne :
et le Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 double Nombre3 = 0; double Nombre4 = 0; long ResultatDivisionEntier = 0; printf("Faisons une division de nombres decimaux \nTaper le numerateur :");scanf("%lf", &Nombre3); printf("Taper le denominateur :"); scanf("%lf", &Nombre4); ResultatDivisionEntier = Nombre3 / Nombre4 ; printf("Le resultat (partie entiere) est %lf", ResultatDivisionEntier);
Autrement dit, cette fois-ci c'est cohérent puisqu'il ne reconnait pas ResultatDivisionEntier comme un nombre décimal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Faisons une division de nombres decimaux Taper le numerateur : 5 Taper le denominateur : 2 Le resultat (partie entiere) est 0.000000
Alors si quelqu'un comprend ce qui se passe je suis preneur d'une explication !!
Merci
Bien sur ce programme n'a aucun intérêt, mais ça me paraît dérangeant de réserver un emplacement mémoire pour un entier et d'en retirer un décimal.:
roll:
Partager