Objective c 目标C余弦

Objective c 目标C余弦,objective-c,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) y是6.12323e-17!这是不正确的。应该是0 NSLog显示了一些不同的内容: operand=cos(operand * M_PI / 180); NSLog(@"cos: %d", operand); 结果: cos:-8320867

我正面临目标c中cos函数的奇怪问题。我已经安装了带有iOS 4.3 SDK的xcode 4.1.1

我在计算一个数字的cos:

y= cos(x*M_PI/180)
这将返回除90度之外几乎所有数字的正确答案

y=cos(90*M_PI/180)
y是6.12323e-17!这是不正确的。应该是0

NSLog显示了一些不同的内容:

operand=cos(operand * M_PI / 180);
NSLog(@"cos: %d", operand);
结果: cos:-832086752


我不明白。有人能解释一下吗?

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


NSLog
中的结果是因为
操作数
是(我假定)一个
浮点数
双精度
,并且您已经告诉
NSLog
将其解释为
int
%d
)。改用
%f
%g

6.12323e-17非常接近于零。我想知道cos(pi)给了你什么答案。。。离负1有多近?你也试过看看(3/2)π是否也是同样的问题吗?操作数=cos(操作数*M_PI/180);为了这个。。。尝试使用不同的变量名。谢谢,我错过了。我现在使用%.f,它在nslog输出中显示0。但uilabel仍然显示6.12323e-17。我必须看看可以做些什么来获得正确的值,即uilabel中的cos(89.9*M_PI/180)=0.00174533,uilabel中的cos(M_PI)=-1,用于uilabel(显示)显示。text=[NSString stringWithFormat:@“%f”,result];就这样;-)