【问题标题】:sinf() and cosf() in iOS app [duplicate]iOS应用程序中的sinf()和cosf()[重复]
【发布时间】:2012-08-12 00:20:29
【问题描述】:

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

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

谢谢,:]

【问题讨论】:

  • 我所知道的每种语言都在其三角函数中使用弧度。每一个:FORTRAN、C、C++、Java、JavaScript、C#....
  • 我习惯使用 MATLAB 进行数学编程,在 MATLAB 中度数被 sin() 和 cos() 方法使用...
  • 至少按照我老师的说法......

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


【解决方案1】:

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

float result = sinf(yourDegree / 180 * M_PI);

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

      一如既往:these functions work in radians,不是度数。

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

      【讨论】:

        【解决方案4】:

        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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-06-14
          • 2012-04-16
          • 1970-01-01
          • 1970-01-01
          • 2016-08-10
          • 2019-07-24
          • 1970-01-01
          相关资源
          最近更新 更多