我有以下代码:
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
也不起作用。我究竟做错了什么?
编辑:
如果数字是双精度类型(例如0.123456789),则该问题将清楚显示。
最佳答案
为了控制浮点数中显示的位数,您需要的功能是precision
,而不是width
。如果要确保以固定的符号(而不是科学的数字)显示数字,还可以查看与fixed
成员函数一起使用的格式标志setf
。
关于c++ - 为什么setw和width对于ostringstream不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13149678/