c – 使用stringstream精度格式化浮点数但丢弃零填充

我试图将浮点数和长双精度的精度(即小数位数)设置为10,但我不希望它们填零.即,

123456.789123456789应该给123456.7891234568,但是
123456不应该给123456.0000000000,而是123456

到目前为止,我已将其缩小到:

long double myNumber;
string myString;
ostringstream myStream;
myStream.setf(ios::fixed,ios::floatfield);
myStream.precision(10);
myStream << myNumber;
myString = myStream.str();

我也试过摆弄setfill(”)和std :: ws,但实际上并不能解决它的问题.
有什么建议?

最佳答案 不要使用ios :: fixed for ios :: floatfield.这就是导致填充的原因.只需使用setprecision.

点赞