我有以下代码:
template<typename _Tp>
std::string string_from_number(_Tp number, int precision = 5)
{
std::ostringstream oss;
oss.width(precision+1);
oss<<number;
return oss.str();
}
但是字符串长度不是预期的 5,而是保持默认值。
将 oss.width
替换为 oss<<std::setw
也不起作用。
我做错了什么?
编辑:
如果数字是 double 类型,比如 0.123456789,问题就会很明显。
最佳答案
控制一个 float 显示的位数,你要的函数是precision
, 不是 width
.如果您想确保获得以固定表示法(而不是科学表示法)显示的数字,还请查看格式标志 fixed
, 与 setf
一起使用成员函数。
关于c++ - 为什么 setw 和宽度不适用于 ostringstream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13149678/