Bonjour
Je suis confronté à un problème d'arrondi de nombres flottants en C/C++:
J'ai besoin de faire des conversions double->string et vice-versa.
Le problème étant que ces conversions ne semblent pas tout à fait réversibles; en effet, si je fais:
string1->double->string2
à l'arrivée, string1 et string2 ne sont pas forcément identiques !
la raison en est que atof() donne un résultat approximatif;
exemple: atof ("121.1") retourne 121.09999999999999 et non 121.1 comme on pourrait s'y attendre.
et si je fais la conversion à la main (sans utiliser atof() donc), je ne parviens pas non plus à obtenir quelque chose de réversible à cause de bizarreries dans les calculs en doubles flottants du style:
1.0 * 0.1 = 0.10000000000000001 ...
Voilà, toute suggestion pour faire des conversions de ce type réversibles serait la bienvenue. Merci.
Je précise que je suis sous VC7.1, bien que je doute que ce soit le compilateur la cause de tout ça...
Partager