Tengo una función que necesita encontrar la diferencia entre 3 números. Pueden entrar como cadenas, por lo que necesito usar parseFloat y mantener 2 decimales. Sin embargo, cuando uso parseFloat con números negativos, obtengo diferencias extrañas.
// This will output -0.004999999999636212 let temp = -8985.69 - -8985.915 - 0.23 console.log(temp); // But this will output -4.365674488582272e-13 let x = -8985.69 let y = -8985.915 let z = 0.23 let temp2 = parseFloat(x.toFixed(2)) - parseFloat(y.toFixed(2)) - parseFloat(z.toFixed(2)) console.log(temp2); Estaba mirando los documentos parseFloat y veo la parte donde la conversión puede cambiar cuando se encuentra un carácter no válido. Pero no veo ningún carácter incorrecto aquí y no entiendo cómo la detención del análisis en cualquier punto haría que fuera igual a -4.365674488582272e-13
Su segundo número tiene tres lugares decimales y lo establece toFixed(2) para que cambie su valor a -8985.92 . Cuando uso .toFixed(3) obtengo el primer resultado que busca.
y = -8985.915
y.aFijo(2) => -8985.92
Debe leer el artículo de 1991 de David Goldberg, Lo que todo científico informático debe saber sobre la aritmética de coma flotante.
Y visite este sitio web: Lo que todo programador debe saber sobre la aritmética de punto flotante, o ¿Por qué mis números no cuadran?