Desarrollo del iPhone de Standford -CS193P Asignación 1 – operación "sin"

uno de los trabajos necesarios es implementar el button "sin" en la calculadora. Agregue los siguientes 4 botones de operación: • sin: calcula el seno del operando superior en la stack.

aquí está mi código

- (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; } 

Intento ingresar el pecado (60) y el resultado = -0.304811

pero en realidad uso calculadora en Windows y el resultado es 0.8860254

No sé qué ocurre con mi código

por favor dame un consejo, gracias!

La calculadora de Windows interpreta 60 grados; su calculadora interpreta 60 como radianes. Ambas respuestas son correctas. Si desea que el número se interprete como grados, multiplique por M_PI y divídalo por 180.

 result = sin(M_PI*operd/180) 

Sin () toma radianes y la calculadora de Windows toma grados por defecto. Entonces, la diferencia.