2

この文字列操作は、省略形で double を出力しますが、その理由はわかりません。なぜこれが起こっているのですか?出力の最初の行のような完全な出力を取得するにはどうすればよいですか?

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
4

3 に答える 3

2

これはデフォルトのフォーマットであるため、precisionでオーバーライドできます。

于 2012-05-15T20:53:16.383 に答える
2

デフォルトの動作では、固定精度を使用するために精度を使用する必要があります

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

using namespace std;

int main() {
double v = 0.000014577;
cout << fixed << v << endl;
}
于 2012-05-15T20:57:00.710 に答える
2

これを試して:

using std::fixed;
...
ss.setf(fixed);
ss << myDouble;
...
于 2012-05-15T20:57:35.897 に答える