我只是面对客观c中cos函数的奇怪问题。我安装了iOS 4.3 SDK的xcode 4.1.1。
我正在计算数字的cos:
y= cos(x*M_PI/180)
除了90度之外,几乎所有数字都会返回正确的答案。
y=cos(90*M_PI/180)
你是6.12323e-17!这是不正确的。它应该是0。
NSLog显示了不同的东西:
operand=cos(operand * M_PI / 180);
NSLog(@"cos: %d", operand);
结果: cos:-832086752
我没有。有人可以解释一下吗?
答案 0 :(得分:11)
浮点运算不精确。 90*M_PI/180
不完全是π/ 2,因为浮点硬件不能完全代表超越数。
NSLog
中的结果是因为operand
是(我推测)float
或double
,而您已告诉NSLog
将其解释为一个int
(%d
)。请改用%f
或%g
。