2017-04-01 47 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

を例えばをその精度を高めるためにあなたが精度を失うことはありません、それはあなたが期待少ないしている一定の精度で、デフォルトでは二重の値はただのstd :: coutのプリントアウトです。 –

答えて

8

std::coutプリント浮動小数点値:

はここに私のコードです。 :、<iomanip>からstd::setprecisionを使用し、

std::cout << std::setprecision(9) << b << std::endl; 
関連する問題