C++ double 转string方法 精度保持到小数点15位
转载来自:C++ double 转string方法 精度保持到小数点15位_萧海的博客-CSDN博客
std::to_string()方法只能精确到六位小数点
double d = 3.1415926535897932384; std::string str = std::to_string(d); std::cout << str << std::endl; // 3.141593
使用stringstream,在输入流时使用setprecision设置精度
double d = 3.1415926535897932384; std::string str = std::to_string(d); std::cout << str << std::endl; // 3.141593 std::stringstream ss; ss << std::setprecision(15) << d; str = ss.str(); // 3.14159265358979
完整测试代码:
#include <iostream> #include <sstream> #include <iomanip> int main(int argc, char* argv[]) { double d = 3.1415926535897932384; std::string str = std::to_string(d); std::cout << str << std::endl; // 3.141593 std::stringstream ss; ss << std::setprecision(15) << d; str = ss.str(); std::cout << str << std::endl; //3.14159265358979 return 0; }
结果