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使用的不同点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值