这段代码小数计算精度为什么不对啊
#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);
}
怎么不对了?标准要求输出多少呢?