web-dev-qa-db-ja.com

浮動小数点値を変換するときにstd :: to_stringの精度を設定します

C++ 11では、タイプfloatまたはdoubleの入力値を指定すると、std :: to_string はデフォルトで小数点以下6桁になります。この精度を変更するための推奨される、または最もエレガントな方法は何ですか?

58
learnvst

to_string()で精度を変更する方法はありませんが、代わりに setprecision IOマニピュレーターを使用できます:

#include <sstream>

template <typename T>
std::string to_string_with_precision(const T a_value, const int n = 6)
{
    std::ostringstream out;
    out.precision(n);
    out << std::fixed << a_value;
    return out.str();
}
92
hmjd