用循环语句计算π的值

#include<stdio.h>
int main()
{float y=1,z=1,pi=0;
int x;
for(x=1;y>=10e-6;x+=2)
{y=1/x;
if(x%4==1)
z=z+y;
else
z=z-y;
}
pi=z*4;
printf("%f",pi);
return 0;
}
这样哪里有问题了呀?为什么输出结果是8呢🤔

for循环内改为
y = 1.0/ x;
此外,z的初始值应为0
代码改为

#include <stdio.h>
int main()
{
    float y = 1, z = 0, pi = 0;
    int x;
    for (x = 1; y >= 10e-6; x += 2)
    {
        y = 1.0/ x;
        if (x % 4 == 1)
            z = z + y;
        else
            z = z - y;
    }
    pi = z * 4;
    printf("%f", pi);
    return 0;
}

.

img


#include <stdio.h>
void main()
{
int n=1;
float temp;
float sum=0;
do
{
temp=(float)1/(2*n-1);
if(n%2==1)
sum+=temp;
else
sum-=temp;
n++;
}while(temp>=10e-6);
printf("Pi=%f\n",sum*4);
}

img