Bonjour,
Je souhaite récupérer un double par l'intermédiaire d'une chaine de caractère (string). mon double est de la forme 49.123400005.
La réception du string se passe sans soucis, mais lorsque je veux mettre cette information dans une variable de type double, ma valeur se voit tronquée à 4 décimaux, et je n'ai plus que la valeur 49.1234. J'ai essayé différentes manières de faire ma conversion (toutes ont le même résultat) :
- Avec les istringstream :
-Avec la fonction atof :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 double convertStringToDouble(string strVal) { istringstream iss(strVal); double dReturn; iss >> dReturn; return dReturn; }
- Avec la fonction strtod :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 dVal = atof(dataRead.c_str());
Si quelqu'un sait pourquoi, et sait s'il y a un moyen de récupérer la précision attendu, je suis preneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 char * tmp; dVal = strtod(dataRead.c_str(), &tmp);
Partager