JavaScript tiene problemas con los decimales.
Por ejemplo. en el caso de cálculo del iva de un importe, que desarrollamos en el artículo anterior REVIT ARCHITECTURE (443) – Programación (8) Conceptos básicos. Funciones y eventos (1), si se indica un importe de 99 euros, aparece el siguiente resultado:
Esto también ocurre con la resta y con la multiplicación (además de la suma como hemos visto).
La solución a este problema se puede se de dos tipos.
Para ver cómo funcionan cada una de las soluciones se realiza el siguiente ejemplo.
Con la opción toFixed(a) y el valor a es el número de decimales a indicar, que se requieren que aparezcan en el resultado de la operación.
El problema de esta opción es que en caso de que el resultado sea un número entero, no elimina el cero después de la parte entera del número.
Además, devuelve un string, y en algunos casos el resultado no es correcto.
Veamos otra solución al problema. Se trataría de multiplicar y dividir el valor de cada variable decimal por el número 1000. Para ello habría que realizar una función para multiplicar y otra función para dividir.
La forma de realizarlo sería como se indica en el siguiente ejemplo: se crea una función para multiplicar por 1000 y otra función para dividir por 1000, y luego en la función suma se aplican estas funciones a los diferentes valores (multiplicar cada valor por 1000 y dividir por 1000).
Realizamos el mismo cálculo del iva con el importe 99 euros y obtenemos el siguiente resultado:
Funciona correctamente, de forma que ya no hay el problema de decimales que sufría javaScript al realizar este cálculo.
Contenido Web de Yolanda Muriel está sujeto bajo Licencia Creative Commons Atribución-NoComercial-SinDerivadas 3.0 Unported.