数值分析编程问题(关于精确度)

来源:百度知道 编辑:UC知道 时间:2024/05/06 09:56:56
#include "STDIO.H"
#include "MATH.H"

double sum=0,allsum=0,e=0;
unsigned int loop_val=2;

double func_sum(int loop_val){
sum=1/((loop_val)^2-1);
return sum;
}
void main(){
unsigned int flag=1;
while(flag==1){
allsum=allsum+sum;
loop_val++;
e=0.5*(1.5-1/(loop_val)-1/((loop_val)+1));
if(allsum<=e){
flag=0;
}
}
printf("allsum=%f\nsum=%f\ne=%f\nloop_val=%d",allsum,sum,e,loop_val);
getch();
}//这个程序的答案中allsum 和sum都为0,所以不正确,那么
为什么不能到正确的答案呢?
都改了,还是不行~~

1/(loop_val)-1/((loop_val)
这些都写成
1.0/(loop_val)-1.0/((loop_val)

还有allsum,sum当然是0
你又没有赋过不是0的值

double sum=0,allsum=0;//
unsigned int loop_val;//类型不同
sum=1/((loop_val)^2-1); /*改为sum=1.0/((loop_val)^2-1);
或sum=1/(double)((loop_val)^2-1); */