2012-06-23 6 views
9

In C# ich dieses:C# Math.cos (double) gibt falschen Wert

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

Aber wenn ich dies tun, in einem Rechner ich diesen

(0.745476752872050588) 

bekommen Warum ist es die falsche Rückkehr Wert?

+1

Dies ist ein Duplikat von http://stackoverflow.com/q/1564207/1071834. Vielleicht sollten diese zusammengeführt und die Frage und Antwort erweitert werden, um alle wichtigen trig-Operationen abzudecken, um zukünftige Duplikate zu vermeiden. – dodexahedron

+0

Mögliches Duplikat von [C# - Warum ist Math.Atan (1)! = Alles in der Nähe von 45] (https://StackOverflow.com/questions/1564207/c-sharp-why-is-math-atan1-anything-near- 45) –

Antwort

5

Sie sind wahrscheinlich Grad mit Radiant verwirrend. Die meisten Rechner benutzen Grad, während die meisten Programmiersprachen auf Radianten eingestellt sind.

14

Math.Cos erwartet einen Winkel in Radiant. Ich vermute, dass dein Rechner in Grad arbeitet.

sollten Sie in der Lage sein, die gleiche Antwort zu erhalten, indem der Wert in Grad in Bogenmaß konvertieren:

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

Das scheint nicht zu funktionieren. Ich bekomme 0,49 in C#. Und ich bekomme 0,84 in Windows-Rechner. – Matt

+0

@Matt Versuchen Sie es erneut, das ist das Problem (und der Code von Reed funktioniert.) – dlev

+0

@Matt Dies liefert 0,84 wie erwartet. Kopieren Sie den Code. – SimpleVar

4

Da Math.Cos Werke in Radiant und Taschenrechner in Grad.

Verwandte Themen