c语言double类型printf问题

背景:今天在用c语言写程序时遇到了一个问题:printf("%lf",double(r));竟然输出乱码(0.000000),浏览了几十个网页之后,大致找到了问题原因。

结论:在c语言中,double类型的读入必须用"%lf";输出必须用"%f"

解释:double和float的精度是不同的,故存储空间也是不同的,所以如果要读入double类型,必须要用%lf来读入,以免精度丢失。而输出,由于printf中并无对%lf的严格定义,故使用%lf不一定会出现正确结果。那使用%f输出又如何呢?由于c语言中的默认参数提升规则%f输出的不论是float还是double都会被提升到双精度进行输出,并不会有精度丢失。

如需更详细解释,请移步C语言官网查看printf详细使用规则。

posted @ 2018-10-03 11:32  Dr_Lo  阅读(2827)  评论(0编辑  收藏  举报