|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这是课后作业中的一道题,是求圆周率的后7位,我的代码是这样的:
- #include <stdio.h>
- int main()
- {
- int a = 1,b = 1;//a作分母
- double i,j;//j是π
-
- while(b < 10000000)
- {
- i = 1/a;
- a += 2;
- b++;
- if(b % 2)
- {
- i = -i;
- }
- j += i;
- }
-
- printf("π= %.7lf",j * 4);
-
- return 0;
- }
复制代码
可是结果是4,小甲鱼的代码是这样的:
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- int sign = 1; // 表示符号
- double pi = 0.0, n = 1, term = 1.0; // n表示分母,term表示当前项的值
- while (fabs(term) >= 1e-8) // 1e-8表示10^(-8)
- {
- pi = pi + term;
- n = n + 2;
- sign = -sign;
- term = sign / n;
- }
- pi = pi * 4;
- printf("pi = %10.7f\n", pi);
- return 0;
- }
复制代码
可是我的错误在哪里呢,求大佬解答
本帖最后由 jackz007 于 2021-7-19 20:38 编辑
此句
改为
代码这么写更加简洁
- #include <stdio.h>
- int main(void)
- {
- int b , s ; // b 作分母
- double j ; // j 是 π
- for(j = 0 , s = 1 , b = 1 ; b < 10000000 ; s = - s , b += 2) j += 1.0 * s / b ;
- printf("π= %.7lf\n" , j * 4) ;
- }
复制代码
|
|