Así que tengo el siguiente código javascript:
function dosine(){ var num = document.getElementById('num').value; console.log(num); num = (num*Math.PI)/180; num = Math.sin(num); numinverse = Math.asin(num); num = num * (180/Math.PI); numinverse = numinverse * (180/Math.PI); document.getElementById('resultsine').innerHTML = "Sine: " + num.toString(); document.getElementById('resultinverse').innerHTML = "Inverse Sine: " + numinverse.toString(); }
Cuando ejecuto este código y pongo cualquier número (en este caso usé 64 para probar) el numinverse devuelve 64.00000000000001, me preguntaba por qué es esto. Obviamente, podría resolver esto usando toFixed, pero me preguntaba por qué sucedió esto en primer lugar.
Esto podría ser lo mismo por qué 0.1 + 0.2 ≠ 0.3
El valor es un número de punto flotante y no se comporta con mucha precisión. En su caso, también podría crear algunas tablas hash que asignen valores de grados enteros a radianes, pero aún así no cubriría todo el espectro.