A continuación, tengo un caso de uso, donde un número se almacena en db como decimal (18, 2). Al intentar leer los datos, los números con .00 se convierten en enteros.
El uso de .toFixed(2) cambia el formato de número a cadena. // como se esperaba.
¿Cómo puedo mantener el formato.
Aporte
const x1 = 4000.00; const x2 = 4000.01; const y1 = parseFloat((x1).toFixed(2)); // actual: 4000 expected: 4000.00 const y2 = parseFloat((x2).toFixed(2)); // actual: 4000.01 expected: 4000.01 // const y1 = parseFloat((x1).toFixed(2)).toFixed(2); //datatype: actual: string, expected: number // const y2 = parseFloat((x2).toFixed(2)).toFixed(2); //datatype: actual: string, expected: number console.log(typeof(y1), y1); console.log(typeof(y2), y2);decimal(18,2) es un formato de número de precisión fija, que aquí significa "18 dígitos decimales, con 2 de ellos a la derecha del punto decimal". Por lo general, se almacena como un decimal empaquetado o un entero. con precisión y escala mantenida por el lenguaje de programación.
Los números de Javascript no son así. Son números binarios de punto flotante de precisión doble IEEE 754: tienen un punto decimal flotante (binario) y cambian precisión por rango.
Necesitas leer Lo que todo programador debe saber sobre la aritmética de punto flotante, o ¿Por qué no cuadran mis números? .