¿Por qué cuando lanzo esta cadena "2019275.159999999916180968" al número, o cuando uso parseFloat (str). Siempre obtengo el resultado "2019275.16". ¿Por qué elimina los lugares decimales adicionales que se proporcionan en la cadena? ¿Y cómo puedo mantener el número de lugares decimales, sin redondearlo a 2 lugares decimales en este caso?
La cantidad de lugares decimales en la cadena es dinámica.
Podría valer la pena investigar una biblioteca como decimal.js para ayudar con esto. p.ej:
Decimal.set({ precision: 24 }); // The default of 20 is not big enough for the number below so you may need to adjust this let a = new Decimal('2019275.159999999912345'); a = a.plus(1); let b = new Decimal('2019275.159999999912345').plus(1); let c = Decimal.add('2019275.159999999912345', 1); console.log(a, b, c); <script src="https://cdnjs.cloudflare.com/ajax/libs/decimal.js/9.0.0/decimal.min.js"></script>Puede usar el método toFixed () después de parseFloat (), de lo contrario, devolverá la menor precisión equivalente a la representación interna
parseFloat("2019275.159999999916180968").toFixed(18)