当前位置: 代码迷 >> C语言 >> 这个题的值是多少
  详细解决方案

这个题的值是多少

热度:52   发布时间:2004-11-10 15:22:00.0
这个题的值是多少
大家好,我有个C语言的问题不会,还请大家指教
有个题是这样的
下列程序段正确的输出结果是()
float a=1111111.111;
float b=7777777.777;
float c;
c=a+b;
printf("c=%f",c);
请说明原因  
----------------解决方案--------------------------------------------------------

输出结果应该是:c=8888889.000000


----------------解决方案--------------------------------------------------------

不对啊

结果不是这样的


----------------解决方案--------------------------------------------------------
是阿,那结果该是多少啊?
----------------解决方案--------------------------------------------------------

在TC2.0上运行输出结果是:c=8888889.000000

因为单精度变量float只提供7位有效数字,7位以后的只有四舍五入了.


----------------解决方案--------------------------------------------------------

改成printf("c=%7.3f",c);再试试


----------------解决方案--------------------------------------------------------

对于这个问题我们要注意在float类型中的精度只有7位包括好像小数点要占一个精度,他在计算机中存储的时候如果是7位精度不能表示的时候比如上面的a值那么a=1.11111e+006会发生四舍五入。所以最后输出的!!结果中只有小数点前面的是精确的,后面的都是不精确的是随机值!!我的在vc中输出――c=8888889.12500

至于说%m.nf输出格式表示的是输出m个宽度的值,其中小数点占据一个宽度,n表示3位小数占宽度!! 例如%10.3f表示输出的数占据10个宽度其中有3位小数!!但是如果要输出的数值实际宽度超过了m那么 就会按照实际宽度输出!!!


----------------解决方案--------------------------------------------------------
  相关解决方案