を使用しstd::to_string()
て double を文字列に変換するときに、結果の精度を設定する方法はありますか?
user955249
質問する
28210 次
3 に答える
46
いいえ。
戻り値: 各関数は、引数の値の文字表現を保持する文字列オブジェクトを返します。この文字列オブジェクトは、それぞれ、、、、、、、、、、またはの
sprintf(buf, fmt, val)
形式指定子を指定し て呼び出すことによって生成されます。サイズ。"%d"
"%u"
"%ld"
"%lu"
"%lld"
"%llu"
"%f"
"%f"
"%Lf"
于 2013-01-25T10:58:10.543 に答える
6
std::stringstream
withを使用する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 に答える