pourquoi est-ce péché méthode retournant une mauvaise réponse?

Hey, travail sur certaines catégories et j'ai heurté contre un drôle de question, im essentiellement en expansion sur une calculatrice classe pour ajouter un peu de trigo méthodes, et j'obtiens une valeur incorrecte lorsque j'appelle le péché de la méthode dans le retour en forme de double. j'ai envoyer une valeur de 100.7 à la méthode et retourne 0.168231, de ce que je peux voir la valeur correcte doit être = 0.939693 ou il abouts.

heres le code, je suis aussi de l'attachement d'un lien vers le projet complet ici:

(merci)

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 is now %g", accumulator, 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;
}
"ce que je peux voir la valeur correcte doit être = 0.939693 ou il abouts" Vraiment? Pourquoi? Pouvez-vous fournir toute justification pour qui? Pensez-vous que le péché œuvres en degrés ou en radians?
je l'ai eu en le mettant dans le mac calculatrice et un web en ligne calculatrice mais peut-être que je saisis mal, l'amour, l'avatar btw, mein führer!
Fait amusant: le tournesol est l'une des raisons que les radians sont la "norme" pour l'argument de péché. Avec des angles en radians, d/dx sin(x) = cos(x). Avec des angles en degrés, vous obtenez un vilain facteur constant qui ne fait que s'aggraver avec les dérivées successives 🙂

OriginalL'auteur nickthedude | 2010-01-07