2012-06-23 19 views
9

En C# tengo esto:C# Math.cos (doble) devuelve un valor incorrecto

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

Pero cuando hago esto en una calculadora consigo este

(0.745476752872050588) 

¿Por qué se vuelve el mal ¿valor?

+1

Este es un duplicado de http://stackoverflow.com/q/1564207/1071834. Quizás estos deberían fusionarse y la pregunta y la respuesta se expandieron para cubrir todas las principales operaciones trigonométricas para evitar futuros duplicados. – dodexahedron

+0

Posible duplicado de [C# - ¿Por qué Math.Atan (1)!] = Cualquier cosa cerca de 45] (https://stackoverflow.com/questions/1564207/c-sharp-why-is-math-atan1-anything-near- 45) –

Respuesta

5

Probablemente confunda grados con radianes. La mayoría de las calculadoras usan Grados, mientras que la mayoría de los lenguajes de programación están configurados para usar radianes.

14

Math.Cos espera un ángulo en radianes. Sospecho que tu calculadora está funcionando en grados.

Usted debe ser capaz de obtener la misma respuesta al convertir el valor en grados a radianes:

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

Eso no parece funcionar. Obtengo 0.49 en C#. Y obtengo 0.84 en la calculadora de Windows. – Matt

+0

@Matt Inténtalo de nuevo, este es el problema (y el código de Reed funciona) – dlev

+0

@Matt Esto devuelve 0.84 como se esperaba. CopyPaste el código. – SimpleVar

4

Debido Math.Cos obras en radianes y la calculadora en grados.

Cuestiones relacionadas