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 回答