51单片机怎样计算sin(x);和cos(x);?

x是我用编码器采集到的角度值,要根据这个值计算高度的,但是我用math.h中的
sin(x);这类的方法直接计算,算出来的是错误的值啊,这是怎么回事啊?难道不能这样直接用吗?
就是我算个最简单的
float A=0;
long int Lx=0;
A=sin(30);
Lx=(int)((double)A*10)

按理说 sin(30);=0.5,那么A的值是0.5 Lx=5,但是实际算出来的值根本不是这样啊 很大一个值,不知道什么玩意!

三角函数的计算是使用的弧度(rad),如果你得到的角度单位是度(deg),需要将deg转换为rad才能用三角函数计算。

1rad=180/π,所以任意度数x转换为弧度就是x*π/180。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-30
sin(x) cos(x)的参数应该是弧度吧,用(角度*π/180)换算成弧度作为输入参数就对了。
另外你看到的很大一个值可能是负数,如果看成无符号数就很大了。
第2个回答  2011-03-30
能不能描述下具体怎么错了,sin函数本身不应该有问题,最好吧附近代码和结果贴上来,这样好帮你看看。
第3个回答  2017-01-09
cosx=1/2,由常见角度的正余弦直接可得x=2kπ±π/3
第4个回答  2011-03-30
用C51的浮点库吧。
相似回答