2017-04-01 163 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;