Question sur la programmation en C

Un problème informatique? Une question? Bref tout ce qui a un rapport avec l'informatique, les virus, les questions d'utilisation de logiciels...

Modérateurs : Naveed, GregLand

Répondre
Sebome

Question sur la programmation en C

Message 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...
Naveed
Messages : 2001
Enregistré le : 13 sept. 2003 13:03
Localisation : 91 (Essonne)
Contact :

Message 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.
:: Naveed ::
Site : http://naveed.free.fr
Livre d'or : http://www.swisstools.net/guestbook.asp?id=27217
"Loin de moi toute prétention de génie, mais si je puis vous aider..."
Image
Sebome

Message 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...
Naveed
Messages : 2001
Enregistré le : 13 sept. 2003 13:03
Localisation : 91 (Essonne)
Contact :

Message 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 :)
:: Naveed ::
Site : http://naveed.free.fr
Livre d'or : http://www.swisstools.net/guestbook.asp?id=27217
"Loin de moi toute prétention de génie, mais si je puis vous aider..."
Image
Nevada Smith
Messages : 16
Enregistré le : 15 sept. 2003 23:28

Message 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 !!!
Bidouille tout et n'importe koi du moment k'on s'eclate!!!
Répondre