我正在构建一个应用程序,它将在sinf()
上执行正弦(cost()
)和余弦(floats
)等数学运算。现在当我尝试在90(也就是1)上计算窦时,我得到0.89的结果......这是完全错误的。有结果是这样的原因吗?有没有办法改善它?我已经尝试使用double
而不是float
并得到相同的答案......是否有可能它比我在模拟器中运行时更好,并且可以在真正的iPhone上正常工作?
最后,使用像GCMathParser
或DDMathParser
这样的数学解析器会提高结果的准确性吗?
谢谢,]]
答案 0 :(得分:8)
问题是,它的正弦值为90弧度,而不是度数。尝试sin(M_PI_2)90°
这些函数使用弧度,而不是度数。
要将度数转换为弧度,请使用度*π/ 180,因此您可以执行sin(90 * M_PI / 180)之类的操作,减少到π/ 2或M_PI_2
答案 1 :(得分:6)
sinf
和cosf
函数使用弧度。你必须先转换:
float result = sinf(yourDegree / 180 * M_PI);
答案 2 :(得分:2)
一如既往:these functions work in radians,而非度数。
尝试计算π/2
的正弦,其弧度为90°。
答案 3 :(得分:1)
objective-c中的trig函数以弧度为单位。你用度数给出了论证。 90弧度的罪是0.89。
请参阅:
http://www.wolframalpha.com/input/?i=sin%2890+rad%29
要转换为度数,只需将度数除以180,然后乘以pi(3.14159就足以作为近似值)
转换后,答案是预期的1。
http://www.wolframalpha.com/input/?i=sin%2890 * PI%2F180 +拉德%29