【发布时间】:2013-05-17 09:41:58
【问题描述】:
在 C++11 中,std::to_string 在给定 float 或 double 类型的输入值时默认为 6 位小数。更改此精度的推荐或最优雅的方法是什么?
【问题讨论】:
标签: c++ string c++11 double floating
在 C++11 中,std::to_string 在给定 float 或 double 类型的输入值时默认为 6 位小数。更改此精度的推荐或最优雅的方法是什么?
【问题讨论】:
标签: c++ string c++11 double floating
无法通过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();
}
【讨论】:
iomanip :只需使用out.precision(n); out << a_value;。使用iomanip 输入的内容也不少。