web-dev-qa-db-fra.com

Définir la précision de std :: to_string lors de la conversion de valeurs à virgule flottante

Dans C++ 11, la valeur par défaut de std :: to_string est de 6 décimales lorsque la valeur d'entrée est de type float ou double. Quelle est la méthode recommandée ou la plus élégante pour modifier cette précision?

58
learnvst

Il n'y a aucun moyen de changer la précision via to_string() mais le manipulateur setprecision IO) pourrait être utilisé à la place:

#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