Estoy intentando algo que pensé que debería ser razonablemente simple. Tengo un ángulo, una posición y una distancia y quiero encontrar las coordenadas X, Y a partir de esta información.Math.Cos & Math.Sin in C#
Con una entrada ejemplo de 90 grados que convertir el valor en radianes con el siguiente código:
public double DegreeToRadian(float angle)
{
return Math.PI * angle/180.0;
}
Esto me da 1.5707963267949 radianes Entonces cuando uso
Math.Cos(radians)
termino con una respuesta de: 6.12303176911189E-17
¿Qué diablos está pasando? El coseno de 90 grados debería ser 0, entonces ¿por qué estoy obteniendo tal desviación ... y más importante aún cómo puedo detenerlo?
Definitivamente se redondea a 0. Utilice un especificador de formato cuando convierta el valor en una cadena para que el usuario lo vea de la manera que espera. –
Ok, entiendo que la falta de precisión se debe a la falta de precisión en los tipos de coma flotante, pero ¿cómo algo como la Calculadora de Windows logran dar por muerta la respuesta, simplemente hace trampa y usa una tabla de búsqueda? – elaverick
@elaverick: quien dice que la Calculadora de Windows usa .Net double (no lo es) o cualquier tipo de coma flotante (no lo es). ¿Y quién dice que está produciendo los resultados precisos de un cálculo en lugar de aplicar reglas de redondeo sensatas? –