大家看一下这个程序为啥输出0?

img

这个是根据那个什么公式通过
π/4​ = 1 − 1/3 + 1/5 - 1/7 + 1/9 + ··· + 1/(2 * n - 1)
算派的。
为啥我这个输出0?
我把下面输出换成an发现也是0,换成n结果是4,我搞不懂

修改处见注释,供参考:

#include<stdio.h>
#include<math.h>  //修改
int main()
{
    double e,n=1,an=1,sn=0,d=-1;//修改
    scanf("%lf",&e);
    while(fabs(an)>e) //修改
    {
        d = d*(-1);   //修改
        an= 1.0*d/(2*n-1);//修改
        sn= sn+an;
        n++;
    }
    printf("%f",sn*4.0);//修改
    return 0;
}

img

第13行改为:an = 1.0*d/(2*n-1);

第13行要用浮点型计算才会是小数,两个整型相除会只保留整数部分
java里double的1是用1D表示,你看看你那是怎么表示的