我有以下代码:

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/

10-11 18:28