0

tengo una duda respecto a Javascript. Cuando ejecuto la siguiente linea

console.log(0.1 + 0.1 == 0.2) // true

Pero cuando ejecuto

console.log(0.1 + 0.2 == 0.3) // false

A que se debe esto?

qwerty
  • 565
  • 2
  • 19

1 Answers1

1

Cuando pones

console.log(0.1 + 0.2 == 0.3)

Haces el calculo directamente y la respuesta en el calculo de 0.1 + 0.2 para JavaScript es: 0.30000000000000004 Esto es debido a IEEE 754 Spec

El estándar del IEEE para aritmética en coma flotante (IEEE 754) es la norma o estándar técnico para computación en coma flotante, establecida en 1985 por el Instituto de Ingenieros Eléctricos y Electrónicos

Ese problema de calculo pasa en muchos otros lenguajes de programacion.

https://ieeexplore.ieee.org/document/30711

Para que no tengas problemas en el calculo te recomendaria que lo pasaras a String y luego lo cortaras a tu gusto para hacer el calculo mas preciso, de esta forma:

let n = 0.1 + 0.2;
let sum = n.toString();

let total = sum.substr(0, 3);

console.log(total);
console.log( total == 0.3)
Erick Burgos
  • 121
  • 3
  • Otra forma de hacer esto es no comparar si dos números en coma flotante, sino calcular la diferencia y verificar que es menor que cierto umbral: este caso: 0.1+0.2 - 0.3 < 0.0001, donde "0.0001" sería el umbral – Raul Luna Dec 18 '19 at 22:49