Digite 0.1 + 0.2 na calculadora acima e você verá 0.30000000000000004 em vez do simples 0.3 que esperava. A calculadora não está com defeito — ela está mostrando o resultado exato de um problema específico de aritmética binária. Entender esse problema leva menos de cinco minutos e vai mudar a forma como você interpreta qualquer resultado decimal em qualquer calculadora digital.
Por que 0,1 não pode ser armazenado exatamente em binário
Todo número dentro de um computador é armazenado em binário — base 2, usando apenas os dígitos 0 e 1. Frações que parecem simples em decimal (base 10) são frequentemente frações de repetição infinita em binário, da mesma forma que 1 ÷ 3 = 0,3333… se repete para sempre em decimal.
O número decimal 0,1 é uma dessas frações. Em binário, ele é 0.0001100110011001100110011… — um padrão que se repete sem fim. Um computador que usa o padrão IEEE 754 de dupla precisão (o formato usado pelo JavaScript e, portanto, por toda calculadora baseada em navegador) armazena números em exatamente 64 bits. Esses 64 bits não conseguem guardar uma sequência infinita de dígitos, então o valor é arredondado para o número representável mais próximo. O resultado arredondado não é exatamente 0,1; ele é:
0.1000000000000000055511151231257827021181583404541015625
O mesmo acontece com 0,2. Sua representação binária também é uma fração de repetição infinita e, após o arredondamento, torna-se:
0.200000000000000011102230246251565404236316680908203125
O que acontece quando esses dois valores arredondados são somados
Quando a calculadora soma essas duas representações imprecisas, os pequenos erros não se cancelam — eles se acumulam. A adição produz:
0.3000000000000000444089209850062616169452667236328125
Esse número, arredondado para o float de 64 bits mais próximo, torna-se 0.30000000000000004. O 4 extra na décima sétima casa decimal não é um erro de arredondamento da calculadora — é o resultado matematicamente correto de somar duas aproximações binárias imprecisas de acordo com o padrão IEEE 754. Todo dispositivo, linguagem e navegador que segue o mesmo padrão produz a mesma resposta.

Por que esta calculadora mostra 0,30000000000000004 em vez de algo mais limpo
A calculadora acima usa o new Function() do JavaScript para avaliar sua expressão, o que significa que ela depende diretamente da aritmética de ponto flutuante nativa de 64 bits do motor JavaScript. Não há uma camada oculta de arredondamento que limpe o resultado.
Internamente, o código arredonda o resultado para 10 casas decimais na maioria dos números — Math.round(result * 1e10) / 1e10 — mas 0.30000000000000004 já tem seu primeiro dígito inesperado na décima sétima casa decimal, bem além desse limite de arredondamento. Portanto, o resultado verdadeiro de ponto flutuante passa sem alteração.
Algumas calculadoras escondem isso arredondando agressivamente para 12 ou 13 algarismos significativos antes de exibir. Essa abordagem produz um 0.3 com aparência mais amigável, mas oculta uma precisão que um cálculo científico ou financeiro pode realmente precisar. A troca é real: mais arredondamento na exibição significa menos resultados surpreendentes, mas também menos dígitos visíveis.
Isso afeta todo cálculo decimal?
Não — e essa é a nuance fundamental. Se um erro aparece ou não depende de o resultado poder ser representado exatamente em binário de 64 bits. Algumas adições acabam arredondando perfeitamente:
- 0,1 + 0,4 = 0,5 — 0,5 é exatamente representável em binário (
0.1na base 2), então os erros se cancelam e o resultado limpo aparece. - 0,25 + 0,25 = 0,5 — pelo mesmo motivo: ambos os valores são potências exatas de 2.
- 0,1 + 0,2 = 0,30000000000000004 — nem 0,1 nem 0,2 são exatamente representáveis, e o erro combinado é grande o suficiente para sobreviver ao arredondamento da exibição.
O padrão não é "calculadoras erram nos decimais." É algo mais preciso do que isso: calculadoras são exatas com frações binárias, e a maioria dos decimais do dia a dia não são frações binárias.
O que fazer quando a precisão é importante
- Para aritmética do dia a dia — o erro fica na décima sexta ou décima sétima casa decimal e é completamente irrelevante para compras, culinária ou controle de gastos.
- Para cálculos financeiros — trabalhe em centavos inteiros em vez de reais fracionados sempre que possível, ou use um software de contabilidade dedicado que aplique aritmética de ponto fixo.
- Para engenharia ou ciência — observe o limite de precisão (cerca de 15 a 17 algarismos significativos para dupla precisão IEEE 754) e avalie se isso importa para a tolerância da sua medição.
- Para confirmar uma suspeita — subtraia o valor esperado:
0.1 + 0.2 - 0.3na calculadora acima retorna aproximadamente5.55e-17, o tamanho real do erro.
Experimente: digite0.1 + 0.2 - 0.3na calculadora acima. O resultado não é zero — é aproximadamente5.55e-17, a diferença exata entre a aproximação armazenada e o valor verdadeiro. Esse número minúsculo é o que o4extra em 0,30000000000000004 representa.