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:
	
	| 12
 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:
	
	| 12
 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