编程计算e的近似值,直到最后一项的绝对值小于10^-5时为止,输出e的值并统计累加项数

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define EPS 1e-5
void main()
{
int n = 1,count =0;
double e = 1,term = 1;
do{
term *= 1.0/n;
e += term;
n++;
count++;
printf("term=%lf\n",term);
}while(fabs(1.0/n) >= EPS);
printf("e=%lf\n",e);
printf("count=%d\n",count);
}

请问哪里不对?输出的term是一直0.000000 笔算了一下,感觉没有问题啊
已解决,不用回答,谢谢。

1、问题主要是类型的问题。因为a 是int型的,在计算的时候不转型成浮点型是不对的(1/a=0)因此要写成:

pi=pi+1.0/(2*a-1);

pi=pi-1.0/(2*a-1);

还有判断条件:

while ((1.0/a)>1e-4);

另外,这个公式是pi/4所以为了得到要求的输出,要写:

printf("pi = %f\ncount = %d\n",pi*4,a);

2、#include<stdio.h>

main()

{

double pi=0,i=1,j=1,x;

do{

x=j/i;

j=-j;

i+=2;

pi+=x;

}while(i<8000);

pi*=4;

printf("%lf\n",pi);

}

扩展资料:

在实际问题中许多数值是无法完全准确的,许多数值要求不必弄得完全准确的,考虑这些数值的大概的数值,这就是近似数(或近似值,在方程中常称为近似解)。

使用近似数就有一个近似程度的问题,一个近似数四舍五入的位数,即这个近似数精确到哪一位。从左边第一个不是零的数字起,到精确到的那一位数止,所有的数字都叫做这个数值的“有效数字”。在实际计算时,对精确的要求提法不同,一般是可以“精确到哪一位”或者要求“保留几位数”或“保留几个有效数字”。在没有特殊说明的情况下,要遵循四舍五入的原则。

参考资料来源:百度百科-近似值

温馨提示:答案为网友推荐,仅供参考
相似回答