客观C余弦

Has*_*lil 5 objective-c

我只是面对客观​​c中cos函数的奇怪问题.我安装了iOS 4.3 SDK的xcode 4.1.1.

我正在计算数字的cos:

y= cos(x*M_PI/180)
Run Code Online (Sandbox Code Playgroud)

除了90度之外,几乎所有数字都会返回正确的答案.

y=cos(90*M_PI/180)
Run Code Online (Sandbox Code Playgroud)

你是6.12323e-17!这是不正确的.它应该是0.

NSLog显示了不同的东西:

operand=cos(operand * M_PI / 180);
NSLog(@"cos: %d", operand);
Run Code Online (Sandbox Code Playgroud)

结果:cos:-832086752

我没有.有人可以解释一下吗?

Mar*_*tos 11

浮点运算不精确.90*M_PI/180并不完全是π/ 2,因为浮点硬件不能完全代表超越数.

结果NSLog是因为operand(我推测)a float或者double,你已经告诉NSLog它将它解释为int(%d).使用%f%g代替.