0

我有以下代码:

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.widthoss<<std::setw也不起作用。我究竟做错了什么?

编辑:

如果数字是双精度型,比如 0.123456789,问题就很明显了。

4

1 回答 1

4

为了控制浮点数中显示的位数,您想要的功能是precision,而不是width。如果您想确保获得以固定表示法(而不是科学)显示的数字,还请查看与成员函数fixed一起使用的格式标志。setf

于 2012-10-31T01:23:15.533 回答