0

Estoy haciendo un software de contabilidad y tengo graves problemas con los cálculos de los decimales.

He aqui un ejemplo: si hago la resta 3.00 - 2.70 me da 0.29 y no 0.30 como deberia

console.log(3.00-2.70);
GDP
  • 2,723
  • 5
  • 20
  • 38
marco811
  • 121
  • 9
  • 3
    Te aconsejo que evites los números con coma flotante cuando trabajes con dinero, usa enteros o usa [una librería que te permita trabajar con ellos sin perder precisión](https://www.google.es/search?q=BigDecimal+js&oq=BigDecimal+js&aqs=chrome..69i57j0l5.4324j0j4&sourceid=chrome&ie=UTF-8) – Pablo Lozano Apr 18 '18 at 09:41

2 Answers2

0

Al principio creí que con la función Math.round() solucionarías el problema, pero al probarla, me di cuenta que no aguanta decimales. Por eso, al seguir googleando, me encontré con esta solución, que pareció ser efectiva: habría que probarla con muchos valores para saber si siempre retorna el valor deseado.

console.log(parseFloat(3.00-2.70).toFixed(2));

La sugerencia de solución la encontré en Round to at most 2 decimal places (only if necessary) . Allí podrás leer todo el análisis que hacen los usuarios sobre los posibles fallos, etc.

quinqui
  • 792
  • 3
  • 12
0

Gracias por la respuesta. He encontrado una librería que me ha ayudado a corregir este problema decimal.js

marco811
  • 121
  • 9