2017-04-01 108 views
2

如果我有一个等于"123.546123"的双字符串,并将其转换为双精度字符并且与atof对应,我只能得到123.546。我能做些什么来解决这个问题?精确度损失

这里是我的代码:在默认情况下的6精密

#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; 
} 
+4

你不会失去精度,它只是性病::法院打印出来,在一定的精度是小于你的预期默认双重价值。 –

回答

8

std::cout打印浮点值。为了增加精度,使用来自<iomanip>std::setprecision,例如:

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