cout格式控制输出float/double浮点数

{
            float test = 1.234;
            std::stringstream ss;
            ss << test;
            std::string str_test;
            str_test = ss.str();
            std::cout<< ss.str()<

结果是这样的:

1.234
1.23399996757507324218750000000000000
1.23400
1.23400
1.2339999676

cout的格式控制,多出的部分,有可能是填充随机数,也可能是填充0
 

            double test = 1234567890.123456;
            printf("%lf\n",test);
            printf("%.16lf\n",test);
            std::stringstream ss;
            ss << test;
            std::string str_test;
            str_test = ss.str();
            std::cout<< ss.str()<

结果是这样的:

1234567890.123456
1234567890.1234560012817383
1.23457e+09
1.23457e+09
1234567890.12345600128
1234567890.12345600128
1.23457e+09

结论:直接cout浮点数,后面小数点位数不对,以后就把浮点数转换为string,然后输出,就像下面这样

double test = 1234567890.123456;
std::stringstream ss;
ss << std::fixed <

结果是这样的:

1234567890.123456

就这么干!

你可能感兴趣的:(C++)