C语言这个程序用double型和float型为什么结果不一样

/*用double的情况,若全部double改成float则结果变为0.00,why??*/
#include<stdio.h>
#include<math.h>
void main()
{
int i;
double fact(int i);
double s,term,x;
i=1;
s=0;
scanf("%lf",&x);
do
{
term=pow(x,i)/fact(i);
s=s+term;
i++;
}while(term>=pow(10,-5));
printf("%.2f",s);
}
double fact(int j)
{
int ri,f;
f=1;
for(ri=1;ri<=j;ri++){
f=f*ri;
}
return(f);
}

你好!!
1、float 和double 的精度本身就是不一样的;
2、double 和 float 的区别是double精度高,有效数字16位,float精度7位;

3、输入匹配的问题:
%f 和 float 是对应的
%lf 和 double 是对应的
%d 和 int 是对应的
不匹配就会出错追问

这里7位就够了呀。。。

追答

float 类型,因为在内存里保存的格式问题,数值会发生变化,所以还是采用 double 吧

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-18
double和float的精度不一样,double是8字节的,float是4字节的
第2个回答  2013-10-18
原因是 scanf 函数

如果你要改为 float,则需要 将scanf那句改成
scanf("%f", &x);
相似回答
大家正在搜