iOS app中的sinf()和cosf()

byt*_*yer 3 math trigonometry objective-c ios ios-simulator

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

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

谢谢, :]

Vin*_* TP 8

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

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

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

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


Dru*_*erB 7

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

float result = sinf(yourDegree / 180 * M_PI);
Run Code Online (Sandbox Code Playgroud)