首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

自学C语言,求帮忙回答二个有关问题

2013-01-21 
自学C语言,求帮忙回答二个问题float a123456.123,b654321.321printf(%f,a+b)为何结果不是777777.444

自学C语言,求帮忙回答二个问题
float a=123456.123,b=654321.321;
printf("%f",a+b);
为何结果不是777777.444000
               而是777777.437500
第二个问题:
printf("%7.2f\n",4.0/3*(PI*r*r*r));
       输出列表里那个4.0我写成4,程序调试就报错
[解决办法]
二进制无法精确表示 float, google 小叔如何转化为二进制

4/3 = 0
4.0/3 = 1.333333...
[解决办法]


#include <stdio.h>
void main()
{
double a=123456.123;
double b=654321.321;
printf("%f\n",a+b);
}//777777.444000

[解决办法]
第一个问题,浮点数的表示不是很精确,学组成原理的阶码时老师会讲的。
你可以试下这个程序:

// By MoreWindows( http://blog.csdn.net/MoreWindows ) 
#include <stdio.h>
int main()
{
float a=123456.123, b=654321.321;
printf("%f + %f = %f\n", a, b, a + b);
return 0;
}

热点排行