C++ 的 printf格式控制输出

测试平台:gcc (Ubuntu 4.8.5-4ubuntu8~16.04.1) 4.8.5

  • %f,默认输出六位小数(对float和double类型都是默认输出六位小数),有效数字只是前6位(包括整数部分和小数部分)
  • %lf,默认输出六位小数(对float和double类型都是默认输出六位小数),但是通过%.16lf使其输出为16位小数,但是有效数组只是前16位(包括整数部分和小数部分)
double doub = 1.01234567890123456789;
printf("%lf\n", doub);    //输出:1.012346。只有1.01234是有效的
printf("%.16lf\n", doub); //输出:1.0123456789012346。 只有1.012345678901234是有效的 
printf("%f\n", doub);     //输出:1.012346。只有1.01234是有效的。
printf("%.16f\n", doub);  //输出:1.0123456789012346。

通过实验来看,好像在gcc (Ubuntu 4.8.5-4ubuntu8~16.04.1) 4.8.5下,%f和%lf的效果是一样的。
既然是一样的,推荐使用%f吧,因为在一些IDE上面(比如说codebloacks,其使用MinGW编译器),&lf输出是错误的
-_-!!,

参考:
[1] http://www.cplusplus.com/reference/cstdio/printf/?kw=printf
[2] scanf和printf 对于%lf和%f使用的不同点

猜你喜欢

转载自blog.csdn.net/baidu_35679960/article/details/80937895
今日推荐