Me temo que en javaScript la suma exacta, exacta, no existe... debido a que implementa el estándar de la
aritmética de punto flotante definida en IEEE-754.
¿¿¿Cómo??? Sí, sí... es verdad. Y quien no se lo crea, que abra una consola del navegador, y escriba
y verá cómo obtiene un "false" como la copa de un pino.
Y es que
Código:
0.1 + 0.2 = 0.30000000000000004
Así que
toFixed es necesario para fijar la precisión con la que estás dispuesto a trabajar.
Realmente esto les pasa a todos los lenguajes EcmaScript y a todos los demás que implementan este estándar. Si alguien tiene más interés en entender por qué pasa esto, en el artículo
"Why is 0.1+0.2 not equal to 0.3 in most programming languages?" lo explican muy bien (en inglés).
Espero haberte orientado sobre cómo trabajar con cantidades.
Un saludo