【发布时间】:2010-12-02 13:00:14
【问题描述】:
我想将双精度转换为固定宽度的字符串。
如果宽度是 10,那么我希望双精度值四舍五入到这个宽度。
例如,如果 value = 102.121323435345 并且宽度是 10,那么这个值应该是,
位置==> 0123456789 值 = 102.121323我可以用 snprintf 实现这一点,但我正在寻找一个 c++ 本地代码来做同样的事情。
char buf[125];
snprint(buf, width, "%.6f", value);
我尝试使用以下内容,但对我没有多大帮助,
std::ostringstream oss;
oss << std::fixed << std::setw(10) << std::precision(6) << value;
std::setw 保证该值的最小宽度,如果该值大于宽度大小,它不会对值进行四舍五入。
谢谢。
【问题讨论】:
-
我不太清楚的事情:您是否尝试像示例输出中那样以 10 的宽度打印,或者像在您的 c 代码中那样使用 4 位小数?
-
为什么反对使用 snprintf?这是完全有效的 C++。 ostringstream 对此太过分了。
-
@Martin,我希望宽度始终保持不变
标签: c++ string-formatting