客观C余弦

时间:2011-08-08 11:26:48

标签: objective-c

我只是面对客观​​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

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

1 个答案:

答案 0 :(得分:11)

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

NSLog中的结果是因为operand是(我推测)floatdouble,而您已告诉NSLog将其解释为一个int%d)。请改用%f%g