Bonjour,
J'ai un etrange probleme quand je convertis des nombres d'un string vers double.
J'ai un fichier avec des nombres en ligne:
5.6 0 0.205867 1.0809 7.22644 0.373206 -5.84675e-317 1.99995 0.00433641 1.45331e-45
Je veux inserer ces nombres sous forme de doubles dans un vecteur de doubles.
Mon probleme apparait avec de tres petites valeurs (inferieures a 1e-310).
Avec ce code:
1 2 3 4 5
| vector<double> vals;
double x;
while (stream >> x) {
vals.push_back(x);
} |
le vecteur vals est tronque : 5.6 0 0.205867 1.0809 7.22644 0.373206
-5.84675e-317 est elimine et je sors de la boucle.
C'est pareil en utilisant la STL:
copy(istream_iterator<double>(stream), istream_iterator<double>(), back_inserter(linevals) );
En revanche cette methode fonctionne:
1 2 3 4 5 6 7
| vector<double> vals;
double x;
string st;
while (stream >> st) {
x = atof(st.c_str());
vals.push_back(x);
} |
Pourquoi seul atof est capabble de convertir des valeurs tres petites?
Merci d'avance.
Partager