1

estoy intentando hacer un conversor. Me funciona bien pero al multiplicar 5*10^-6 en vez de dar el resultado correcto que sería 0.000005 me devuelve 0.0000049999999999999996. Cuando multiplico algo por 10**-5 tambien me da error pero en este caso todas las veces. Alguien me podría decir por que sucede esto??

function kilometro_a_mm(){
  var valor = document.getElementById("valor_km").value
  var resultado = valor * Math.pow(10, -6);
  document.getElementById("resultado").innerHTML = resultado;
}
function por_menos_5(){
  var valor = document.getElementById("valor_km").value
  var resultado = valor * Math.pow(10, -5);
  document.getElementById("resultado").innerHTML = resultado;
}
<input type="text" id="valor_km" placeholder="inserta el valor en mm"><input type="submit" onclick="kilometro_a_mm()"><input type="submit" onclick="por_menos_5()"><br>
    <p id="resultado"></p>
  • 2
    ¿Responde esto a tu pregunta? [¿Por qué mis programas no pueden hacer cálculos aritméticos correctamente?](https://es.stackoverflow.com/questions/197/por-qu%c3%a9-mis-programas-no-pueden-hacer-c%c3%a1lculos-aritm%c3%a9ticos-correctamente) – Mauricio Contreras Feb 20 '21 at 12:44
  • En primer lugar, los valores introducidos en un elemento `input` siempre serán de tipo `String`, por lo tanto lo primero que debes hacer es convertirlos explícitamente a un valor numérico, bien sea usando [`parseInt()`](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/parseInt) o [`parseFloat()`](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/parseFloat). En segundo lugar, recuerda que existe algo llamado error de precisión de los cálculos aritméticos en un ordenador. Nunca dará un valor exacto, sino uno aproximado. Saludos – Mauricio Contreras Feb 20 '21 at 12:49
  • Recomiendo la lectura que comparte @MauricioContreras. Es demasiado buena. – David E. Luna M. Feb 21 '21 at 05:02

0 Answers0