4

必要な作業の 1 つは、電卓に「sin」ボタンを実装することです。次の 4 つの操作ボタンを追加します。 • sin : スタックの一番上のオペランドの正弦を計算します。

ここに私のコードがあります

- (double)performOperation:(NSString *)operation
{
  double result = 0;

   if ([operation isEqualToString:@"+"]) {

    result = [self popOperand] + [self popOperand];

   }else if ([@"*" isEqualToString:operation]) {

    result = [self popOperand] * [self popOperand];

   }else if ([operation isEqualToString:@"-"]) {

    double subtrahend = [self popOperand];
    result = [self popOperand] - subtrahend;

   }else if ([operation isEqualToString:@"/"]) {

    double divisor = [self popOperand];
    if(divisor) result = [self popOperand] / divisor;

    }else if([operation isEqualToString:@"sin"]){

    double operd = [self popOperand];
    NSLog(@"operd=%g",operd);
    if(operd) result = sin(operd);

   }

[self pushOperand:result];

     return result;
}

sin(60) を入力してみると、result=-0.304811

しかし、実際にはWindowsで電卓を使用しており、結果は0.8860254です

コードの何が問題なのかわかりません

4

2 に答える 2

6

Windows電卓は、60を度として解釈します。電卓は60をラジアンとして解釈します。どちらの答えも正しいです。代わりに度として解釈したい場合はM_PI、180を掛けて割ります。

result = sin(M_PI*operd/180)
于 2012-05-24T10:20:02.967 に答える
0

sin() はラジアンを受け取り、Windows 電卓はデフォルトで度を受け取ります。だから、違い。

于 2012-05-24T10:22:31.230 に答える