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;
}

 

结果

 

posted @ 2021-10-29 14:04  冰糖葫芦很乖  阅读(1533)  评论(0编辑  收藏  举报