C语言求pi的近似值(for循环)

如题

img

循环只进行一次,不知道为什么,应该是这个圈起来的地方有问题。
#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

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

用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,他会默认你只需要整数,所以循环条件就不成立了