轉載來自: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; }
結果