#include
int main(){
double n=0;//pi/4的近似值,就是运算的结果;
int j=2;//控制正负号
for(int i=1;(1/i)>(1e-6)||i==1;i=i+2){
if(j%2==0){
n=n+1/i;
}
if(j%2==1){
n=n-1/i;
}
j++;
printf("%d\n",i);
}
double pi=n*4;
printf("%.8f",pi);
return 0;
}
1
4.00000000
用j控制正负号
pi=n/4; pi是最后的值
修改如下,供参考:
#include<stdio.h>
int main()
{
double n=0; //pi/4的近似值,就是运算的结果;
int j=2;//控制正负号
for(int i=1;(1.0/i) > (1e-6);i=i+2){ //(1/i)>(1e-6)||i==1;
if(j%2==0){
n=n+1.0/i;
}
else { //if(j%2==1){
n=n-1.0/i;
}
j++;
//printf("%d\n",i);
}
double pi=n*4;
printf("%.8f",pi);
return 0;
}
循环条件有问题,当i >1时,1/i为0,不满足循环条件,所以循环只执行一次。
把那三个1/i改成1.0/i试试
精度的问题,如果你不把1写成1.0,他会默认你只需要整数,所以循环条件就不成立了