4

可能重复:
为什么 sin() 在这里没有返回正确的值?

我正在构建一个应用程序,它将在 上执行正弦 ( sinf()) 和余弦 ( cost()) 等数学运算floats。现在,当我尝试计算 90(即 1)的正弦值时,我得到的结果是 0.89……这是非常错误的。结果如此偏离是否有原因?有没有办法改进它?我尝试过使用double而不是float得到相同的答案......它是否可能只是像我在模拟器中运行它时一样,并且可以在真正的 iPhone 上正常工作?最后,是否会使用类似GCMathParserDDMathParser提高结果准确性的数学解析器?

谢谢, :]

4

4 回答 4

10

和函数使用弧度sinfcosf您必须先转换:

float result = sinf(yourDegree / 180 * M_PI);
于 2012-08-15T17:10:32.177 回答
9

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

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

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

为什么 sin() 不返回正确的值?

于 2012-08-15T17:13:48.953 回答
2

与往常一样:这些函数以弧度工作,而不是度数。

尝试计算 的正弦π/2,即 90° 的弧度。

于 2012-08-15T17:10:22.987 回答
1

Objective-c 中的三角函数以弧度为单位。你以度数给出论点。90 弧度的 sin 是 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+rad%29

于 2012-08-15T17:16:37.320 回答