objective-c – 为什么这个sin方法会回答错误的答案?
发布时间:2020-12-14 17:18:31 所属栏目:百科 来源:网络整理
导读:嘿,在一些类别上工作,我遇到了一个奇怪的问题,我基本上扩展了一个计算器类来添加一些trig方法,当我在返回时调用sin方法时,我得到的值不正确一双.我发送一个100.7的值到该方法,它返回0.168231,从我可以看到正确的值应该是= 0.939693或那里. 下面是代码,我还在
嘿,在一些类别上工作,我遇到了一个奇怪的问题,我基本上扩展了一个计算器类来添加一些trig方法,当我在返回时调用sin方法时,我得到的值不正确一双.我发送一个100.7的值到该方法,它返回0.168231,从我可以看到正确的值应该是= 0.939693或那里.
下面是代码,我还在这里附加了一个完整项目的链接: (谢谢) http://files.me.com/knyck2/svpfd4 // // Calculator_trig.m // 11.4_calculator_trig // // Created by Nicholas Iannone on 1/6/10. // Copyright 2010 __MyCompanyName__. All rights reserved. // #import "Calculator_trig.h" #import <math.h> @implementation Calculator (Trigonometry) -(double) sin { double result; result = (double) sin (accumulator); return result; } -(double) cos { double result; result = cos ( accumulator); return result; } -(double) tan { double result; result = tan ( accumulator); return result; } @end #import "Calculator.h" @implementation Calculator -(void) setAccumulator: (double) value { accumulator = value; } -(void) clear { accumulator = 0; } -(double) accumulator { return accumulator; } -(double) memoryClear { memory = 0; NSLog(@"memory has been cleared"); return accumulator; } -(double) memoryStore { memory = accumulator; NSLog(@"memory has been set to %g",memory); return accumulator; } -(double) memoryRecall { accumulator = memory; NSLog(@"accumulator has been set to %g",accumulator); return accumulator; } -(double) memoryAdd { memory += accumulator; NSLog(@"accumulator: %g has been added to memory,memory is now %g",accumulator,memory); return accumulator; } -(double) memorySubtract { memory -= accumulator; NSLog(@"accumulator: %g has been subtracted from memory,memory); return accumulator; } -(double) add: (double) value { accumulator += value; return accumulator; } -(double) subtract: (double) value { accumulator -= value; return accumulator; } -(double) multiply: (double) value { accumulator *= value; return accumulator; } -(double) divide: (double) value { accumulator /= value; return accumulator; } -(double) changeSign { accumulator = -accumulator; return accumulator; } -(double) reciprocal { accumulator = 1 / accumulator; return accumulator; } -(double) xSquared { accumulator *= accumulator; return accumulator; } @end #import <Foundation/Foundation.h> #import "Calculator.h" #import "Calculator_trig.h" int main (int argc,const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; Calculator *myCalc = [[Calculator alloc] init]; double a = 0; [myCalc setAccumulator: 100.70]; a = [myCalc sin]; NSLog(@" sin of accumulator = %f",a); [myCalc release]; [pool drain]; return 0; } 解决方法
你正在计算100.7弧度的罪,给出的答案是正确的.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |