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で使用されるformat flag も確認してください。setf

于 2012-10-31T01:23:15.533 に答える