精度损失

时间:2017-04-01 17:44:01

标签: c++ c++11 c++14 precision

如果我有一个等于"123.546123"的双字符串并将其转换为atof的双精度数字,我只得到123.546。我该怎么做才能解决这个问题?

这是我的代码:

#include <iostream>

int main(){

    std::string a = "123.546123";
    double b = atof(a.c_str());

    std::cout << a << std::endl;
    std::cout << b << std::endl;

    return EXIT_SUCCESS;
}

1 个答案:

答案 0 :(得分:7)

std::cout默认打印精度为6的浮点值。要提高这种精确度,请使用<iomanip>中的std::setprecision,例如:

std::cout << std::setprecision(9) << b << std::endl;