可能的重复:
得到正弦 180 的值为 1.22465e-16
我正在计算圆圆周上的一个点。我有圆的半径和圆心。
在这里你可能会说,有什么大不了的,有一个直接的公式。
是的,角度的单位是rad
x = x + r*sin(angle)
y = y + r*cos(angle)
好吧,现在的问题是即使我以弧度传递角度。但我没有得到下面提到的角度的正确答案
for 90 degree (rads = 1.5708) i get y axis = -4.3774e-08
for 180 degree (rads = 3.14159) i get x axis = -8.74228e-08
for 270 degree (rads = 4.71239) i get y axis = 1.19249e-08
for 360 degree (rads = 6.28319) i get x asix = 1.74846e-07
我正在将度数转换为弧度
return degrees * M_PI / 180;
我不确定为什么会发生这种情况。
一定有什么严重的错误。
这是用于转换的代码
float angle = DegreesToRadians(90);
float x = sin(angle);
float y = cos(angle);
谁能帮我这个?
M_PI
在“math.h”中定义为
#define M_PI 3.14159265358979323846264338327950288
这只是大约(无理数)Pi。所以
cos(M_PI/2), sin(M_PI), cos(3*M_PI/2), sin(2*M_PI)
只是大约零。 Pi 不能精确地表示为float
or double
.
从你的输出我假设你使用float
。
由于a的有效位数float
约为 7,斜率(一阶导数)为sin()
and cos()
此时是+/- 1
,我想说,结果正如你所期望的那样好。与...一起工作double
会给出更好的结果,但不完全为零。
所以什么也没有严重地错误的是,您不能期望浮点计算的结果是准确的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)