我只是面对客观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代替.
| 归档时间: |
|
| 查看次数: |
6068 次 |
| 最近记录: |