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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
copy(istream_iterator<double>(stream), istream_iterator<double>(), back_inserter(linevals) );
En revanche cette methode fonctionne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.