long98

背景:今天在用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详细使用规则。

分类:

技术点:

相关文章:

  • 2021-12-29
  • 2018-11-07
  • 2021-12-12
  • 2021-12-29
  • 2021-12-29
  • 2021-12-19
猜你喜欢
  • 2021-12-15
  • 2021-12-29
  • 2021-12-15
  • 2021-12-15
  • 2021-11-28
相关资源
相似解决方案