编写函数计算∏的值,直到最后一项的绝对值小于10-6,∏/4约等于1-1/3+1/5-1/7+···

两个代码运行出来的答案不一样

#include<stdio.h>
#include<math.h>
void main()
{
    int it;
    double fm,fn,fpi;
    fpi=0;fm=1;fn=1;it=1;
    while(fabs(fn)>=1e-6)
    {
        fpi=fpi+fn;
        fm=fm+2;
        it=-it;
        fn=it/fm;
    }
fpi=fpi*4;
    printf("%12.7lf",fpi);
}

这是老师给的

#include<stdio.h>
#include<math.h>
int main()
{
    int fm=1,flag=-1;
    double sum=1,item=1;
    while(fabs(item)>=1e-6)
    {
        fm=fm+2;

        item=flag*1.0/fm;

        sum=sum+item;
        flag=-flag;
    }
    sum=sum*4;
    printf("%12.7lf",sum);
}

这是我自己写的
请大神帮忙看一下,哪里不妥

你的程序和老师的程序都没有错,但是浮点数存在误差,不同的运算顺序会导致精度差异,所以结果有不同很正常。