问一个C++小程序

来源:百度知道 编辑:UC知道 时间:2024/06/07 16:29:48
利用下列公式计算π的值:π/4=(1-1/3)+(1/5-1/7)+...+[1/(4n-3)]-[1/(4n-1)].我编的程序如下
#include<iostream.h>
#include<iomanip.h>
void main()
{
int n;
float sum=0;
float pi;
for(n=1;n<=20;n++)
sum=sum+1/(4*n-3)-1/(4*n-1);
pi=4*sum;
cout<<"圆周率为"<<setprecision(8)<<pi<<endl;
}
结果总是4,不知道哪里出现问题,请大侠指点

sum=sum+1/(4*n-3)-1/(4*n-1);
改为:
sum=sum+1.0/(4*n-3)-1.0/(4*n-1);

注意:
/运算,当/左右都为整型时为取整操作,只有当有一边为float型时,才为取商操作

还有一点,
for(n=1;n<=20;n++) 你这样将n的取值取得太少了,计算出来的π值很不精确,取大一些就好了

改过以后:
#include<iostream.h>
#include<iomanip.h>
void main()
{
int n;
float sum=0;
float pi;
for(n=1;n<=2000;n++)
sum=sum+1.0/(4*n-3)-1.0/(4*n-1);
pi=4*sum;
cout<<"圆周率为"<<setprecision(8)<<pi<<endl;
}

吧int n,改成float n试试。

#include<iostream.h>
#include<iomanip.h>
void main()
{
int n;
float sum=0;
float pi;
for(n=1;n<=1000;n++)
sum+=1.0/(4*n-3)-1.0/(4*n-1); //--------'/'为取整符号,要做除法应把整数变为小数后再算.结果不太精确,N可以等于100000
pi=4*sum;
cout<<"圆周率为"<<pi<<endl;
}