Digite 0.1 + 0.2 na calculadora acima e pressione igual. A resposta exibida é 0.3 — porque a ferramenta arredonda seu resultado para dez casas decimais antes de mostrar. Mas a aritmética bruta por trás retorna 0.30000000000000004. Esse fragmento minúsculo não apareceu do nada; é a superfície visível de um fenômeno mais profundo: toda operação de ponto flutuante deixa um resíduo de arredondamento, e quando você encadeia operações suficientes, esses resíduos podem se acumular em um erro que importa.
Por que os computadores não conseguem armazenar 0,1 exatamente
Os computadores armazenam números em binário — um sistema de uns e zeros. Assim como a fração 1/3 não pode ser escrita exatamente em decimal (ela vira 0.3333… para sempre), o número 0.1 não pode ser escrito exatamente em binário. O mais próximo que o computador consegue no formato de dupla precisão de 64 bits usado pelo JavaScript — e portanto por toda calculadora baseada em navegador — é aproximadamente 0.1000000000000000055511151231257827021181583404541015625.
Essa representação é regida pelo padrão IEEE 754, que define como todos os processadores modernos lidam com números decimais. O padrão garante que cada operação aritmética retorne o resultado representável mais próximo — mas "mais próximo" não é "exato". Essa diferença, por menor que seja, é um erro de arredondamento por definição.
Como os erros crescem em uma cadeia
Um único erro de arredondamento de 5 × 10⁻¹⁷ é imperceptível. A preocupação é o que acontece quando você usa esse resultado ligeiramente errado como entrada para a próxima operação, e esse resultado alimenta a seguinte, e assim por diante. Como o artigo da Wikipedia sobre erro de arredondamento descreve: "Quando uma sequência de cálculos com uma entrada envolvendo qualquer erro de arredondamento é feita, os erros podem se acumular, às vezes dominando o cálculo."
Dois mecanismos impulsionam esse crescimento:
- Desvio aditivo — em uma soma longa (somando muitos valores pequenos), cada adição pode arredondar na mesma direção. Os erros individuais não se cancelam; eles se acumulam. Somar mil números que carregam um erro de
10⁻¹⁵pode produzir um erro final em torno de10⁻¹²— ainda pequeno em termos absolutos, mas um milhão de vezes maior que o erro por etapa. - Cancelamento subtrativo — subtrair dois números quase iguais pode amplificar o erro relativo drasticamente. Se ambos os valores são imprecisos na 15ª casa decimal e os primeiros 14 dígitos se cancelam, o erro agora domina o que sobra. Calculadoras usam isso em identidades trigonométricas e outros casos de quase cancelamento, por isso suas funções trigonométricas são implementadas com cuidado especial.
Um exemplo concreto de arredondamento repetido
Arredondar um número a cada passo em vez de só no final produz um erro composto maior que um único arredondamento. Arredonde 9.945309 para duas casas decimais e você obtém 9.95 (erro: 0.0047). Arredonde isso para uma casa decimal e você obtém 10.0 (erro total: 0.055). Arredondar tudo de uma vez — 9.945309 para uma casa decimal — dá 9.9, com erro total de apenas 0.045. O caminho em dois passos introduziu erro extra porque o primeiro arredondamento empurrou o valor além do próximo limite.
É por isso que um cálculo que mostra um resultado intermediário — por exemplo, copiar um valor arredondado de um cálculo para o próximo — pode produzir uma resposta final ligeiramente diferente de manter toda a precisão em uma única expressão contínua.
O que a calculadora faz para gerenciar isso
A calculadora acima aplica um passo final de arredondamento após avaliar cada expressão: o resultado bruto de ponto flutuante é arredondado para dez casas decimais antes da exibição. O código interno usa Math.round(result * 1e10) / 1e10, que elimina o resíduo de ponto flutuante para a maioria dos cálculos do dia a dia. Por isso 0.1 + 0.2 aparece como 0.3 em vez do bruto 0.30000000000000004.
Essa é uma escolha pragmática: elimina ruído distrativo no final da maioria dos resultados. Também significa que a calculadora não exibirá erros muito menores que 10⁻¹⁰, independentemente de como surgiram. Para a grande maioria dos cálculos práticos — tarefas escolares, orçamentos, estimativas de engenharia — dez casas decimais significativas são mais precisão do que o problema exige, então esse arredondamento é um recurso, não um compromisso.
Quando o erro acumulado realmente importa
Para uso cotidiano, o erro acumulado de arredondamento raramente é um problema. Ele se torna relevante nestas situações:
- Somas muito longas — somar manualmente centenas de valores financeiros ou leituras de medição, passo a passo, em vez de em uma única expressão.
- Fórmulas iterativas — cálculos onde uma saída alimenta a próxima entrada por muitos ciclos, como juros compostos ao longo de centenas de períodos.
- Quase cancelamento — subtrair duas quantidades quase iguais, o que pode expor o resíduo de arredondamento que normalmente fica escondido muito à direita.
- Arredondamento intermediário manual — copiar um resultado intermediário arredondado para a próxima etapa em vez de mantê-lo na mesma expressão.
A mitigação prática é simples: insira a fórmula inteira em uma expressão quando puder, evite arredondar valores intermediários manualmente, e trate um resultado com muitas casas decimais como uma aproximação, não uma resposta exata, se algum dos valores de entrada for aproximado.
Confira você mesmo: digite0.1 + 0.2na calculadora acima — você verá0.3. O visor é limpo, mas a aritmética subjacente não é exata. Para uma longa cadeia de passos, mantenha a expressão completa em uma linha sempre que possível: a calculadora lida com o arredondamento acumulado internamente, em vez de você introduzir desvio extra copiando intermediários arredondados manualmente.