新手请教:数据溢出问题。
题目是:利用sinx=x-x*x*x/3!+x*x*x*x*x/5!-...... 求sin(x)的近似值,直到最后一项的绝对值小于10e-7。X从键盘输入。我编的程序在下面,编译能够通过,但是显示结果是:Floating point error: Domain.
不知道自己错在哪里的,想了很多,有可能是小数点位数错误的,不知道怎么改的,请各位高手帮忙看一下,谢谢!
double power(int x,int n)
{int i;
double s=1.0;
for (i=1;i<=n;i++)
s=s*x;
return s;
}
long fac(int n)
{int i;
long f=1;
for (i=1;i<=n;i++)
f=f*i;
return f;
}
#include "stdio.h"
#include "math.h"
main()
{int i,n,m=-1;
double x,k;
scanf ("%f",&x);
for (i=1;;i++)
{if(fabs(power(x,n)/fac(n))<=10e-7) break;
else
{ m*=-1;
k+=m*power(x,n)/fac(n) ;
}
}
printf ("%lf\n",k);
}