通过麦格劳林展开式,来编写一个sin函数,C语言内置了三角函数,这个三角函数在 #include<math.h> 的头文件下要输入角度数,是有着需要先将角度转化为弧度在进行使用,我编写的sin函数当精度太高时高角度数会无法执行,可能存在数据溢出
// sin.cpp : sinx=x-x*x*x/3*2+x*x*x*x*x/5*4*3*2-...
#include "stdafx.h"
#include"math.h"
double jiecheng (int n)
{
long sum=1;
while(n>1)
{
sum*=n;
n--;
}
return sum;
}
int _tmain(int argc, _TCHAR* argv[])
{
double pi=3.14159,zx=0,x;
printf("请输入角度数\n");
scanf_s ("%lf",&zx);
x=pi*zx/180;
int n=3;
double fenzi=x,fenmu=1,fuhao=1,bufen=x,s=0;
while(abs(fenzi/fenmu)>=1e-5)
{
fenmu=jiecheng(n);
n++;n++;
fenzi=fenzi*x*x;
fuhao*=-1;
bufen=fuhao*fenzi/fenmu;
s=s+bufen;
}
printf("%f",s+x);
return 0;
}