Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1431 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Problème conversion chaîne en nombre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème conversion chaîne en nombre

n°1855454
baham
Posté le 26-02-2009 à 11:45:38  profilanswer
 

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!  :sweat:  
Merci!

mood
Publicité
Posté le 26-02-2009 à 11:45:38  profilanswer
 

n°1855546
kyntriad
Posté le 26-02-2009 à 14:42:23  profilanswer
 

Utilise un stringstream:
 
http://www.cplusplus.com/reference [...] tream.html


---------------
You can't start a fire with moonlight
n°1855554
Joel F
Real men use unique_ptr
Posté le 26-02-2009 à 14:52:04  profilanswer
 

le 2 c'ets le defaut de représnetation des float en 32/64 bits.
5.78 = 0x40B8F5C3 = 5.7800002
 
http://babbage.cs.qc.edu/IEEE-754/Decimal.html

n°1855681
Un Program​meur
Posté le 26-02-2009 à 18:29:48  profilanswer
 

baham a écrit :

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


 
Parce que la valeur exacte n'est pas représentable avec les formats flottants habituels.  Ces formats permettent de représenter des rationnels avec une puissance de 2 au dénominateur.

n°1855708
baham
Posté le 26-02-2009 à 19:49:52  profilanswer
 

Merci pour vos réponses!
 
Je reste donc sur l'imprécision... Le problème venait surtout du fait que je récupérais une liste de nombre d'un fichiers, et que ces nombres correspondaient à des pourcentages dont je vérifiais que la somme faisait bien 100...
 
J'ai simplement ajouté un epsilon à mon test.
 
@+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Problème conversion chaîne en nombre

 

Sujets relatifs
Problème d'accentuation... [résolu]Problème de date [résolu]
ASP et access champ memo problemeProblème avec URL rewriting
problème #IND et #INF ,C++[Projet] Problème avec automatisation de bouton
afficher un nombre limité de produit par page[Pascal / SDL] Problème pour gérer les Threads
Décomposition d'une chaineProblème application client/server, envoie et reception de bytes
Plus de sujets relatifs à : Problème conversion chaîne en nombre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR