这小数计算精度为什么不对

问题遇到的现象和发生背景

这段代码小数计算精度为什么不对啊

img

用代码块功能插入代码,请勿粘贴截图
#include 
#include 
#include 

int main()
{
    double x,y,f=1;
    int i,n,a,b;
    scanf("%lf,%d",&x,&n);
    if (n==1)
        printf("%lf",f);
    else
    {
        for (i=2;i<=n;i++)
            {
            for (a=1,b=1;a<=i-1;a++)
                b=b*a;
            if (i%2==0)
                y=pow(x,i-1)/b;
            else
                y=-pow(x,i-1)/b;
            f=f+y;
            }
    }
    printf("x=%-12.6f y=%-12.6f\n", x, f);
}

运行结果及报错内容

img

怎么不对了?标准要求输出多少呢?