javascript - raiz - ¿Por qué Math.cos(90*Math.PI/180) produce 6.123031769111... y no cero?
quitar decimales javascript (3)
6.123233995736766e-17 está muy cerca de cero. Sólo redondea el número.
Esta pregunta ya tiene una respuesta aquí:
- ¿La matemática de punto flotante está rota? 28 respuestas
Convierto los grados a radianes (grados * Math.PI / 180) pero ¿por qué hace lo siguiente:
Math.cos(90 * Math.PI/180)
rendimiento 6.123031769111 ... y no cero?
Estoy intentando realizar rotaciones 2D con matrices y los resultados están completamente fuera de control.
La salida de
Math.cos(90 * Math.PI/180)
es
6.123031769111886e-17
Observe el e-17
al final, lo que significa que este número es 6.123 x 10 -17 . Este es un número muy cercano a 0 que efectivamente es 0. La razón por la que no es idéntico a 0 se debe a errores de redondeo en el formato doble IEEE-754 que le impide obtener una representación exacta de π / 2 y causa errores de redondeo de minutos En el cálculo del coseno.
Por cierto, ¡también me sorprendió bastante cuando el resultado volvió con un 6! Solo después de mirar el final, las cosas empezaron a tener sentido.
¡Espero que esto ayude!
6.123233995736766e-17
Es una notación científica para un número muy pequeño, cerca de cero. No es exactamente cero debido a errores de redondeo, etc.