2012-06-23 16 views
9

In C# ho questo:C# Math.cos (doppia) restituisce valore errato

double Cos = Math.Cos(32.471192290848492); //Equals 0.49299653250335213 

Ma quando faccio questo in una calcolatrice ottengo questo

(0.745476752872050588) 

Perché è tornando dalla parte del torto valore?

+1

Questo è un duplicato di http://stackoverflow.com/q/1564207/1071834. Forse questi dovrebbero essere uniti e la domanda e la risposta ampliate per coprire tutte le principali operazioni trigonometriche per evitare duplicati futuri. – dodexahedron

+0

Possibile duplicato di [C# - Perché Math.Atan (1)! = Qualsiasi cosa vicino a 45] (https://stackoverflow.com/questions/1564207/c-sharp-why-is-math-atan1-anything-near- 45) –

risposta

5

Probabilmente stai confondendo i gradi con i radianti. La maggior parte dei calcolatori usa i gradi, mentre la maggior parte dei linguaggi di programmazione è impostata per utilizzare i radianti.

14

Math.Cos prevede un angolo in radianti. Ho il sospetto che la tua calcolatrice funzioni in gradi.

Si dovrebbe essere in grado di ottenere la stessa risposta convertendo il valore in gradi in radianti:

double angleInDegrees = 32.471192290848492; 
double cos = Math.Cos(angleInDegrees * (Math.PI/180.0)); 
+0

Questo non sembra funzionare. Ottengo 0.49 in C#. E ottengo 0.84 in calcolatrice di Windows. – Matt

+0

@Matt Riprovare, questo è il problema (e il codice di Reed funziona.) – dlev

+0

@Matt Restituisce 0,84 come previsto. Copia il codice. – SimpleVar

4

perché Math.Cos opere in radianti e la calcolatrice in gradi.

Problemi correlati