数値の小数点を設定する直接関数はありますか?たとえば、私は3.14341
を得て、私のパラメータは2
なので、3.14
となる。機能はsetprecision
ですが、結果だけが出力されます。また、私はこのようなアルゴリズムを作った:パラメータに応じて10進数を設定します。
std::string fixPrecision(std::string const& value, int digits)
{
std::string num = value;
float temp = std::stof(num);
float fractpart, intpart;
fractpart = modf(temp, &intpart);
int a = (int)(fractpart * pow(10,digits));
double last = intpart + a*(pow(0.1 , digits));
return std::to_string(last);
}
それはうまくいく。私は欲しいものを手に入れますが、結果を123.12
の代わりに123.120000
になるように文字列に変換しなければなりません。
私は確かにここでいくつかの助けを使用することができます。前もって感謝します。
編集:私の関数は文字列形式の整数と戻り値を取る必要があるので、重複する質問ではありません。再度、感謝します。正確
なぜ番号を内部で丸めますか?通常は、表示するときに丸めるだけです。通常、精度を取り除く必要はありません。通貨のようなもので作業している場合は、整数/固定精度のライブラリを使用する必要があります。 – NathanOliver
これは私の仕事です。回答は –
のため、文字列で数値を送るべきです。これは 'std :: stringstream'と' std :: fixed'や 'std :: setprecision'のようなマニピュレータで実現できます。ただし、文字列を直接操作することを検討することをお勧めします。中間の 'float'を使用すると、精度が損なわれる危険性があります。 –