Conversion de string en double avec une précision supérieure à 4 décimaux
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 :
Code:
1 2 3 4 5 6 7
| double convertStringToDouble(string strVal)
{
istringstream iss(strVal);
double dReturn;
iss >> dReturn;
return dReturn;
} |
-Avec la fonction atof :
Code:
1 2
|
dVal = atof(dataRead.c_str()); |
- Avec la fonction strtod :
Code:
1 2
| char * tmp;
dVal = strtod(dataRead.c_str(), &tmp); |
Si quelqu'un sait pourquoi, et sait s'il y a un moyen de récupérer la précision attendu, je suis preneur.