Page 1 sur 1

Question sur la programmation en C

Posté : 15 juin 2005 16:03
par Sebome
Bonjour à tous.
J'ai une petite question sur les float en langage C.
Lorsque je fais :

Code : Tout sélectionner

scanf("%f",&t);
printf("t=%f",t);
et que je rentre par exemple : 123.9
il m'affiche : 123.900002
Pourquoi ne m'affiche t'il pas 123.900000 :?:
Ceci peu paraître négligeable, cependant je fais un programme de calcul qui demande une très grande précision et à la fin des calculs le programme donne un résulta qui n'est pas tout a fais juste...

Posté : 15 juin 2005 16:54
par Naveed
j'ai essayé le code suivant :

Code : Tout sélectionner

#include <stdio.h>

void main(void)
{
double t;
printf("entrez un nombre:\n");
scanf("%lf", &t); 
printf("t=%lf",t);
}
/*  
void main(void)
{
float t;
printf("entrez un nombre:\n");
scanf("%f", &t); 
printf("t=%f",t);
}*/
:arrow: voilà ça marche, j'ai mis un double au lieu d'un float et ça marche

maintenant, c vrai que je comprend pas trop pourquoi y a cette erreur de précision, j'aurai aussi essayé un float d'abord.

Posté : 15 juin 2005 21:16
par Sebome
Merci Naveed.
J'ai aussi essayé avec des doubles entre temps é ca a résulo ce petit problème.
Mais pourquoi ce manque de précicion avec les float je crois que ce restera un mistaire...

Posté : 15 juin 2005 21:19
par Naveed
le forum de developpez.com sont des experts, ils sauront te répondre.
si tu pose la question (ce que je peux que conseiller :D ), pense à poster la réponse, je serai intéressé aussi :)

Posté : 16 juin 2005 01:25
par Nevada Smith

Code : Tout sélectionner

void main(void)
{
float t;
printf("entrez un nombre:\n");
scanf("%.1f", &t);
printf("t=%.1f",t); 
}
le .1 donne la precision
% [.prec] type_char
ca suit la regle des arondis (>=5 etc....)

sinon le bug de l'an .900002 j'connaissais pas.... :D
des explications sur devellopez.com surement ouep !!!