Prob de virgule pour disision

Résolu
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009 - 17 juil. 2006 à 23:25
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 18 juil. 2006 à 22:13
oui je sais c tt c** mais j'ai un trou de mémoire, car j'ai arrété le C pendant un pti moment et donc je me souvien plus trop d'un truc :
pour faire l'opération d'un nombre par un autre en consol bon je racourci mon code et enfin sa donne sa :
.....
......long nombre1 0, nombre 2 0, resultat = 0;
printf("quel est le nb 1 ?\n");
scanf("%ld", &nombre1);
printf("quel est le nb 2?");
scanf("%ld", &nombre2);
resultat=noimbre1/nombre2;
printf("le resultat est %ld", resultat);

donc la, logique sa me renvoi un nombre troncaturé, mais je me souvien plus par quel moyen arriver à avoir un nombre à virgulee !!!

@+

8 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
17 juil. 2006 à 23:28
Utilise des double ou des float pour des nombres à virgule.

C++ (@++)
___________________________________________
Venez débattre de sujets touchant à la programmation ici
3
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
18 juil. 2006 à 15:15
resultat = ((float)nombre1)/nombre2;


++
3
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
18 juil. 2006 à 22:13
Oui c'est vrai, j'avais oublié le cast.
Tu peux économiser deux parenthèses en faisant:
resultat = (float) nombre1/nombre2;
3
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
18 juil. 2006 à 00:58
Salut,
Le type long représente un nombre entier (signé) sur 32 bits. C'est donc normal ce que tu as car il ne prend que la partie entière du nombre. Comme précisé par SAKingdom, tu dois donc utiliser le type float ( à virgule flottante) ou double ( float double pécision).
long nombre1=5;
long nombre2=4;
float resultat= nombre1/nombre2;
printf("le resultat est %f", resultat); // remplacer %ld par %f .

Affichage -> le resultat est 1.25
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
18 juil. 2006 à 13:12
long nombre1 = 0, nombre2 = 0;
float resultat = 0;
printf("Quel est le nombre que tu veux diviser ?\n");
                  scanf("%ld", &nombre1);
                  printf("Et par quel nombre veux tu diviser %ld ?? \n", nombre1);
                  scanf("%ld", &nombre2);
                  resultat = nombre1 / nombre2;
                  printf("Le resultat de ta division de %ld par %ld est de %f \n\n", nombre1, nombre2, resultat);

si je met 50 diviser par 4 sa me met 12.000000000 pk ? merci de ces repknce rapide aussi :D
@+
0
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
18 juil. 2006 à 14:39
alors ?

@+
0
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
18 juil. 2006 à 14:41
en plus ton truc sa fait pas 1.25 sa fait 1.000000000 des explication ?

@+
0
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
18 juil. 2006 à 15:18
merci bien mon sauveur :d
@+
0
Rejoignez-nous