60

を使用しstd::to_string()て double を文字列に変換するときに、結果の精度を設定する方法はありますか?

4

3 に答える 3

46

いいえ。

戻り値: 各関数は、引数の値の文字表現を保持する文字列オブジェクトを返します。この文字列オブジェクトは、それぞれ、、、、、、、、、、またはのsprintf(buf, fmt, val)形式指定子を指定し て呼び出すことによって生成されます。サイズ。"%d""%u""%ld""%lu""%lld""%llu""%f""%f""%Lf"

于 2013-01-25T10:58:10.543 に答える
6

std::stringstreamwithを使用するsetprecisionことが最も柔軟で移植性の高い選択肢になると思いますが、データがわかっている場合は、回避策として、to_string結果をサブストリング化することができます。例えば:

std::string seriesSum(int n)
{
    double sum = 0, div = 1;
    for(int i = 0; i < n; i++) {
      sum += 1.0 / div;
      div += 3;
    }

    return std::to_string(round(sum * 100)/100).substr(0,4);
}

上記のコードでは、文字列の最初の 4 桁を取得して小数点以下 20.00桁で出力していますが、整数部分が 1 桁を超えることはないことがわかっているため、機能します。を使用string.find()して小数点記号を検索し、その位置を使用して部分文字列のサイズを計算して、もう少し動的にすることもできます。

于 2016-11-04T20:32:19.807 に答える