2012-05-15 1 views
2

Cette opération de chaîne de caractères imprime un double en abrégé, et je n'arrive pas à comprendre pourquoi. Pourquoi cela se produit-il, et comment puis-je obtenir la sortie complète comme la première ligne de sortie?C++ Chaîne raccourcit le double lors de l'impression

string myString = "The value is "; 
ss.str(""); // stringstream from ealier 
ss.clear(); 
ss << myDouble; // Double with value 0.000014577 
myString.append(ss.str()); 
cout << myDouble << endl; 
cout << myString << endl; 

$ ./myapp 
0.000014577 
The value is 1.4577e-05 
+1

Cela se produit parce que les paramètres de précision de '' cout' et ss' sont différents. – dasblinkenlight

+0

Merci à tout le monde pour être si rapide avec leurs réponses, je nouveau, il me manquait quelque chose d'évident. Merci à tous :) – jwbensley

+0

Si vous utilisez uniquement Stringstream pour la conversion, [std :: to_string] (http://en.cppreference.com/w/cpp/string/basic_string/to_string) est également utile. –

Répondre

2

son comportement par défaut, vous devez utiliser précision pour utiliser une précision fixe

#include <string> 
#include <iostream> 
#include <iomanip> 

using namespace std; 

int main() { 
double v = 0.000014577; 
cout << fixed << v << endl; 
} 
2

C'est parce que c'est la mise en forme par défaut, vous pouvez la remplacer par precision.

2

Essayez ceci:

using std::fixed; 
... 
ss.setf(fixed); 
ss << myDouble; 
... 
Questions connexes