JavaScript puede llegar a tener comportamientos muy extraños. Uno de ellos es como trata a los decimales y es que JS no es muy preciso con ellos, haciendo operaciones sin sentido como:
3 * 10.3; //el resultado debería ser 30.9//pero JS da 30.900000000000002
Este comportamiento errático de JavaScript puede llevar a errores fatales en nuestras aplicaciones. Entonces, ¿Cómo arreglo esto?
Pues en este mismo curso se propone una solución, pero… la verdad es que no es muy robusta.
Esta es la solución que se propone:
let price = 10.3;
let total = 3 * price;
//el resultado debería ser 30.9//pero js da 30.900000000000002//para arreglarlo
total = Math.round( 3 * 100 * price ) / 100;
//primero multiplicamos el numero por 100 para trabajar con un entero//si en el resultado de esa operación hay decimales se redondean//y se divide entre 100 para volver a pasarlo a decimales
Si eres observador habrás notado que aquí hay un problema… esto solo sirve para números con dos decimales, esta limitación viene del 100 por el que multiplicamos y dividimos. Este numero debe tener la misma cantidad de ceros que decimales la variable price.
Eso es lo que te enseñaré aquí, como hacer que la cantidad de ceros sea dinámica.
letnumber = 9.639;
let decimalNumbers = number.toString();
//se toman los números después del punto
decimalNumbers = decimalNumbers.substr( decimalNumbers.indexOf(".") + 1, decimalNumbers.length - 1 );
let decimalNumbersLength = decimalNumbers.length;
//se eleva el10ala cantidad de números decimales que hay
//para tener un numero conla misma cantidad de ceros que decimales
let fixNumber = 10 ** decimalNumbersLength;
total = Math.round( 3 * fixNumber * number ) / fixNumber;
<h3>Espero que te haya servido. 😉💚</h3>
Tengo una duda, vi que en este Curso uno de los comentarios dice que se puede usar para algo similar como esto una línea de código supongo denominada tal que así:
peso_final.toFixed(2)
Pero no se lo que hace, ni donde se debe poner para que funcione, o el como funciona, ¿podrías solventarme esta duda?
Gracias ❤️
https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed
Tengo la misma duda que NicolasR
https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed
gracias por este tutorial, lo tomaré en cuenta para el futuro 😮