Skip to content

Errores de calculo

Usar números de coma flotante puede dar lugar a errores de calculo, prueba a hacer alguno de estos calculos en javascript:

0.1 + 0.2 2.98 + 0.01 0.105 + 0.005

¿Por qué ocurre esto?

Los números de coma flotante se representan convirtiendo binario a decimal, sin embargo, algunos números decimales no se pueden representar con precisión en binario, este problema no es exclusivo de javascript, ocurre en todos los lenguajes de programación, y en todos los lenguajes de programación se soluciona de la misma manera, redondeando el resultado.

¿Cómo lo solucionamos?

Podemos solucionarlo redondeando el resultado, para ello usaremos el método toFixed(). Este es el método mas directo:

javascript
(0.1 + 0.2).toFixed(2)
(0.1 + 0.2).toFixed(2)

Tambien podemos usar Math.round():

javascript
Math.round(0.1 + 0.2)
Math.round(0.1 + 0.2)

En muchos casos, como con el del dinero, no queremos redondear y nos interesa que el resultado sea exacto, para ello podemos simplemente utilizar enteros, y dividir el resultado entre 100 para obtener el valor en euros:

javascript
0.1 + 0.2 === 0.3 // false
(0.1 + 0.2) / 100 === 0.3 // true
0.1 + 0.2 === 0.3 // false
(0.1 + 0.2) / 100 === 0.3 // true