c++stringc++11doublefloating

Set precision of std::to_string when converting floating point values


In C++11, std::to_string defaults to 6 decimal places when given an input value of type float or double. What is the recommended, or most elegant, method for changing this precision?


Solution

  • There is no way to change the precision via to_string() but the setprecision IO manipulator could be used instead:

    #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 std::move(out).str();
    }