Estoy trabajando en una herramienta web que realiza algunos cálculos financieros y usa varios números en las entradas. ¿Hay alguna manera de mostrar ese número con solo 2 decimales pero detrás cuando la aplicación hace los cálculos para usar el número completo con todos los decimales? Algo así como una celda de Excel que muestra 2 decimales pero detrás del número tiene 10 decimales.
El problema es que si redondeo los números, la aplicación da valores incorrectos. Es solo para fines de visualización para que se vea limpio y ordenado.
Gracias.
Por ejemplo:
Valor real de entrada: 8952340,66543023 Valor de visualización de entrada: 8952340,67
Podría escribir una función general que pueda redondear a cualquier número de dígitos:
const roundTo = num => digits => Math.round(num * (10 ** digits)) / 10 ** digits const num = 1234.8304 const roundToTwo = roundTo(num)(2) console.log(roundToTwo) // logs 1234.83Donde num es tu número y digits es la n de dígitos después de la coma.
const f1 = new Intl.NumberFormat('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2, }); console.log("first -> ", f1.format(8952340.66543023)); const f2 = (n, d) => n.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2, }); console.log("Second -> ", f2(8952340.66543023));Prueba este código y cuéntame.
puede usar toFixed(2) para reducir la precisión a dos decimales.
pero tenga cuidado, el valor de retorno es una cadena, no un número
let float = 1.23456789; let fixed = float.toFixed(2); console.log(fixed ); console.log(typeof(fixed))