马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
编程计算π的近似值。要求:采用公式p2/6 = 1/12 + 1/22 + 1/32 + … 实现,直到最后一项小于10-12。(定义double类型的变量)
答案为3.141572,但是我的答案是3.141592,请各位帮忙看看是哪里出了问题#include<stdio.h>
#include<math.h>
int main()
{
double n=1.00,x=0.00,pi;
while(1.00/((n+1)*(n+1))>=1e-12)
{
x+=1.00/(n*n);
n++;
}
pi=sqrt(6.00*x);
printf("pi = %.6lf\n",pi);
}
你的代码基本上是正确的,但是有一个小错误导致了结果的不准确。在while循环中,你使用的是1.00/((n+1)*(n+1))作为判断条件,这个条件是判断最后一项是否小于10的负12次方。然而,根据题目要求,应该是判断最后一项的绝对值是否小于10的负12次方。
要修正这个问题,你可以将判断条件修改为fabs(1.00/(n*n)) >= 1e-12。这样,就可以正确判断最后一项的绝对值是否小于10的负12次方。修改后的代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
double n = 1.00, x = 0.00, pi;
while (fabs(1.00 / (n * n)) >= 1e-12)
{
x += 1.00 / (n * n);
n++;
}
pi = sqrt(6.00 * x);
printf("pi = %.6lf\n", pi);
}
修改后的代码应该可以得到正确的结果3.141592。
|