求教:求 PI 的值,换了个写法,答案不一样
题目:
计算公式
求圆周率 PI 的近似值,直到发现某一项的绝对值小于为止(该项不累加)。
要求输出的结果总宽度占 10 位,其中小数部分为 8 位。
程序中使用浮点型数据时,请定义为双精度 double 类型。
写法一:(答案错误)
#include<stdio.h> #include<math.h> int main() { double PI = 0.0, sign = 1.0, n = 0.0, i = 1.0; while (fabs(sign) >= 1e-6) { sign = pow(-1, n) * (1.0 / i); PI = PI + sign; i = i + 2; n = n + 1; } printf("PI=%10.8f\n", 4 * PI); return 0; }
写法二:(答案正确)
#include<stdio.h> #include<math.h> int main() { double PI = 0, n = 1.0, t = 1 / n, sign = 1; while (fabs(t) >= 1e-6) { PI = PI + t * sign; sign = -sign; n = n + 2; t = 1 / n; } printf("PI=%10.8f\n", PI * 4); return 0; }
上一个写法在逻辑上有误吗
#笔试题目##题解#