iOS app中的sinf()和cosf()

时间:2012-08-15 17:08:10

标签: objective-c ios math ios-simulator sin

  

可能重复:
  Why doesn't sin() return the correct value here?

我正在构建一个应用程序,它将在sinf()上执行正弦(cost())和余弦(floats)等数学运算。现在当我尝试在90(也就是1)上计算窦时,我得到0.89的结果......这是完全错误的。有结果是这样的原因吗?有没有办法改善它?我已经尝试使用double而不是float并得到相同的答案......是否有可能它比我在模拟器中运行时更好,并且可以在真正的iPhone上正常工作? 最后,使用像GCMathParserDDMathParser这样的数学解析器会提高结果的准确性吗?

谢谢,]]

4 个答案:

答案 0 :(得分:8)

问题是,它的正弦值为90弧度,而不是度数。尝试sin(M_PI_2)90°

这些函数使用弧度,而不是度数。

要将度数转换为弧度,请使用度*π/ 180,因此您可以执行sin(90 * M_PI / 180)之类的操作,减少到π/ 2或M_PI_2

Why doesn't sin() return the correct value?

答案 1 :(得分:6)

sinfcosf函数使用弧度。你必须先转换:

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%2F1​​80 +拉德%29