我是靠谱客的博主 现代香烟,最近开发中收集的这篇文章主要介绍double float %lf %f C语言中的单精度与双精度,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

最近在用 sscanf 读取一个浮点数,显示总是出错,后来发现是 double 和float 赋值的问题,现把过程粘出来,便与以后记忆;

代码如下:

//test
char tempppp[50] = {0};
strcpy(tempppp, "npt=11.0-34.23");
double a,b;
sscanf(tempppp, "npt=%f-%f", &a, &b);
printf("a= %f, b= %f n", a, b);

打印出来的结果如下:

a= 1048576.000000, b= 13378822144.000000

很明显是错的。

后来查资料发现, 单精度和双精度是不能相互赋值的,正确的赋值方式是:

%lfdouble 变量赋值, 用 %ffloat 变量赋值,不能混着来,

显示的时候无所谓,用 %f ,%lf  都可以。

修改之后的代码如下:

//test
char tempppp[50] = {0};
strcpy(tempppp, "npt=-11.0--34.23");
float a,b;
sscanf(tempppp, "npt=%f-%f", &a, &b);
printf("a= %f, b= %f n", a, b);
printf("a= %lf, b= %lf n", a, b);
strcpy(tempppp, "npt=-11.0--34.23");
double c,d;
sscanf(tempppp, "npt=%lf-%lf", &c, &d);
printf("c= %lf, d= %lf n", c, d);
printf("c= %f, d= %f n", c, d);

打印的结果如下:

a= -11.000000, b= -34.230000
a= -11.000000, b= -34.230000
c= -11.000000, d= -34.230000
c= -11.000000, d= -34.230000

总结:单精度双精度数存储格式完全不同,且没有线性的转换关系,赋值时只能用对应的格式赋值。

参考文章:http://www.cnblogs.com/BradMiller/archive/2010/11/25/1887945.html

最后

以上就是现代香烟为你收集整理的double float %lf %f C语言中的单精度与双精度的全部内容,希望文章能够帮你解决double float %lf %f C语言中的单精度与双精度所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部