Conversion chaîne en nombre

Résolu
cs_baham Messages postés 4 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 février 2009 - 26 févr. 2009 à 13:01
Pistol_Pete Messages postés 1054 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 26 févr. 2009 à 13:29
Bonjour à tous!

 
Je viens vous voir car je rencontre un problème ; je souhaite
convertir une chaîne de caractère en un nombre à virgule (float,
double, etc). voilà ce que je fais :

 
char * pEnd; char c[] = "5.78";

float flt = strtod(c, &pEnd);

double db = strtod(c, &pEnd);

 
Mon problème, c'est que je me retrouve avec dans mon float : 5.7800002 et dans mon double : 5.7800000000000002

Pourquoi n'ai je pas les valeurs exactes, et d'où vient ce "2"...?

 
J'ai essayé avec un char* plutôt qu'avec un char[], et la fonction atoi plutôt que strtod, et toujours le même problème...

 
Aidez moi s'il vous plait!    
Merci!

1 réponse

Pistol_Pete Messages postés 1054 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
26 févr. 2009 à 13:29
Salut
Tu n'auras jamais une précision absolue. Avec des float ou des doubles, il y a toujours des erreurs d'arrondis. Cette erreur vient de la manière dont les flottants sont stockés.
A+

____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
3
Rejoignez-nous