- 论坛徽章:
- 1
|
一个C语言题目,请大家看一下
原帖由 "hzluly" 发表:
这里还有一个题目:利用无穷级数计算圆周率如下:π=4-4/3+4/5-4/7+4/9-4/11。。。。。,要计算多少项才能得到3.14,3.141,3.1415,3.14159?
我编了一个函数处理,应该可以的。但是好像不管多少项都得不出3.14?......... 计算机的精度是有限的,太小的数字是表示不出来的。
还有你做循环时,最好把求的值和你希望得到的值相减,然后取它们的
绝对值,如果结果在一个很小的数以内,比如1e-6(我的计算机能表示的最小的数字),那就可以认为这个值就可以了。下面是我改的一个。
- #include <stdio.h>;
- #include <math.h>;
- void pi(double *ss, int *n);
- int main()
- {
- double sum = 0;
- int counter;
- printf("pi1 = %f\n",pi1);
- pi(&sum, &counter);
- printf("sum = %f,counter = %d\n",sum,counter);
- return 0;
- }
- void pi(double *ss, int *n)
- {
- double s = 0.0, w, f = -1.0;
- int i = 0;
- long j = 1;
- while(fabs(s - 3.14) >; 1e-6){
- f *= -1;
- w = 4*f/(2*i+1);
- i++;
- j++;
- s += w;
- }
- *n = i;
- *ss = s;
-
- }
复制代码 |
|