JavaScript · Intermediário · Português · Técnico
ponto flutuante
Formato numérico de 64 bits (IEEE 754) usado por todo Number em JavaScript. Não representa exatamente muitas frações decimais, por isso 0.1 + 0.2 não dá 0.3.
Onde usar
Gera bugs em cálculos de dinheiro e em comparações de decimais. Em code review, valores monetários devem usar inteiros em centavos ou biblioteca decimal, e comparações usam tolerância.
Em código
console.log(0.1 + 0.2);
// 0.30000000000000004
const dif = Math.abs(0.3 - (0.1 + 0.2));
console.log(dif < Number.EPSILON); // trueExemplos
O erro de ponto flutuante fez a soma dar trinta centavos e uns quebrados.
Não compare decimais com === por causa do ponto flutuante.
Cuidado
Comparar decimais com === depois de somas; arredonde ou compare com margem de erro.
Sinônimos
floating point, IEEE 754