C语言中float和double的问题。

#include<stdio.h>
main()
{
double x;
x=2222222222.222226666;
printf("x=%f\n",x);
}
x=2222222222.222227
Press any key to continue

#include<stdio.h>
main()
{
float x;
x=22222.678;
printf("x=%f\n",x);
}
x=22222.677734
Press any key to continue

问①,在我这台电脑用这个软件的只“针对”上述这个程序,这个结果,即“此刻”float 和 double 的有效数分别是多少呢?(注意:不要多想。就“只针对”此刻。即上述我给出的那个程序的那个结果的“此刻”)
②,书中说 float 的有效数是 6~7位
Double 的有效数是 15~16位。 究竟是多少位和电脑有关还是和软件有关?

float 有效数字6-7位,double 有效数字14-16位,同编译器有关。标准的C规定 float 用 32 位2进制,double 用 64 位2进制。

用格式: printf("x=%.10f\n",x); 可以输出小数10位。

(1) x=2222222222.22222 -- 15 位精度,第16位起含舍入误差,
(2) x=22222.67 -- 7位精度, 第8位起含舍入误差
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-18
提醒: 你上面的double 显示格式要用%lf而不是%f
第2个回答  2013-07-18
软件
用的编译器不一样,结果可能会不一样
第3个回答  2019-03-06
开发环境软件就显示了这么几位。有些小数位数很长的数只显示了前边的几位,后面的被四舍五入了。

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网