Objective c 目标C余弦
我正面临目标c中cos函数的奇怪问题。我已经安装了带有iOS 4.3 SDK的xcode 4.1.1 我在计算一个数字的cos: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
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];就这样;-)