GUIDE 07

Erro de ponto flutuante na calculadora: por que 0.1+0.2 e sin(π) parecem errados

Por que 0.1+0.2 dá 0.30000000000000004 em precisão dupla IEEE 754, como uma tela de 12 dígitos mostra 0.3, a correção de sin(π), 170! e estouro, o limite de 2⁵³ e o cancelamento catastrófico.

Imprima 0.1 + 0.2 na maioria das linguagens de programação e você obtém 0.30000000000000004. Nada está quebrado: é assim que os computadores guardam números reais. Este guia explica o formato de precisão dupla IEEE 754 usado pelo SciKey e pela maioria dos softwares numéricos, como seus limites aparecem nos resultados e como a calculadora lida com eles.

1. Precisão dupla IEEE 754

Um número de precisão dupla (binary64) usa 64 bits.

ParteBitsFunção
Sinal1Positivo ou negativo
Expoente11Qual potência de 2
Mantissa52Dígitos significativos (53 na prática, com um 1 inicial implícito)

53 bits significativos correspondem a cerca de 15 a 17 dígitos decimais. O maior valor representável é cerca de 1.797×10³⁰⁸, e a distância entre 1 e o próximo número de precisão dupla (o épsilon da máquina) é 2⁻⁵² ≈ 2.22×10⁻¹⁶.

2. 0.1 não tem forma binária exata

Assim como 1/3 = 0.333… nunca termina em decimal, 1/10 nunca termina em binário: 0.1 = 0.0001100110011…₂, dízima periódica. Ele é arredondado para 53 bits, então o valor guardado é na verdade

0.1000000000000000055511151231257827…

0.2 também é guardado um pouco acima. A soma carrega os dois erros até 0.3000000000000000444…, que é um número de precisão dupla diferente daquele que guarda 0.3 (0.2999999999999999888…). Por isso o decimal mais curto que identifica a soma é 0.30000000000000004.

Pelo mesmo motivo, 0.1×3 também dá 0.30000000000000004. Decimais cujo denominador é potência de dois, como 0.5, 0.25 e 0.375, são exatos em binário e não têm erro.

3. Por que a calculadora mostra 0.3 mesmo assim

O SciKey não exibe o valor interno bruto: ele arredonda para os algarismos significativos escolhidos (12 por padrão). Arredondado para 12 dígitos, 0.30000000000000004 é 0.300000000000, ou seja, 0.3. O erro está no 17º dígito e nunca chega à tela.

As calculadoras científicas de mão fazem o mesmo: costumam calcular com cerca de 15 dígitos internos e exibir 10, escondendo na exibição os pequenos erros nos últimos dígitos. Só a exibição muda, então o valor guardado continua sendo 0.30000000000000004. Levá-lo para outros cálculos costuma deixar erros da ordem de 10⁻¹⁶, irrelevantes na prática.

4. Por que sin(π) não é zero

No modo RAD, sin(π) deveria ser exatamente 0. Mas π é irracional, e o número de precisão dupla mais próximo de π é cerca de 1.22×10⁻¹⁶ menor que o valor real. Perto de π, o seno tem inclinação −1, então sin(π em precisão dupla) ≈ 1.2246×10⁻¹⁶. O seno em si foi calculado corretamente; a entrada é que nunca foi exatamente π.

O SciKey corrige isso com estas regras:

  1. Nos modos DEG e GRAD, o argumento é reduzido exatamente módulo 360° (400 gon), e os múltiplos de 90° devolvem valores exatos: sin(180) = 0, cos(90) = 0, e tan(90) é indefinida, então dá erro.
  2. No modo RAD, se o argumento coincidir com um múltiplo inteiro de π com erro relativo abaixo de 10⁻¹³, sin devolve 0; se coincidir com um múltiplo ímpar de π/2, cos devolve 0 e tan dá erro.

Assim, sin(π) mostra 0 no SciKey. A correção só vale perto dos múltiplos de π e não afeta nenhum outro cálculo.

5. Números grandes: fatoriais e estouro

Fatoriais crescem rápido. 170! ≈ 7.25741561531×10³⁰⁶ ainda cabe em precisão dupla, mas 171! vale cerca de 1.24×10³⁰⁹, acima do máximo de 1.797×10³⁰⁸. Por isso o n! do SciKey aceita inteiros de 0 a 170 e 171! dá erro de estouro.

Na prática, fatoriais grandes costumam aparecer dentro de razões. A combinação C(200, 3) é 200!/(3!·197!), mas nCr(200, 3) = 1313400 a calcula diretamente, sem valores intermediários enormes. Em probabilidade, tomar logaritmos e somá-los é outra técnica comum.

6. O limite dos inteiros: 2⁵³

Com 53 bits significativos, todo inteiro até 2⁵³ = 9007199254740992 é exato. Acima disso, a precisão dupla pula inteiros. 2⁵³ + 1 não pode ser representado e é arredondado de volta para 2⁵³, então 2^53+1-2^53 dá 0, não 1: o 1 somado sumiu quando a soma foi guardada.

É por isso que o SciKey mostra binário, octal e hexadecimal só para inteiros com valor absoluto até 2⁵³; acima disso, os dígitos de menor ordem não são garantidos. E é por isso também que números de cartão ou identificadores com mais de 16 dígitos mudam os últimos dígitos quando tratados como números.

7. Cancelamento catastrófico: o erro mais perigoso

Subtrair dois números quase iguais apaga os dígitos iniciais e deixa quase só erro. Isso se chama cancelamento catastrófico.

Exemplo 1. (1+1E-15)-1 deveria dar 10⁻¹⁵, mas em precisão dupla dá 1.11022302463×10⁻¹⁵. Guardar 1 + 10⁻¹⁵ introduz um erro de arredondamento da ordem de 10⁻¹⁶, e depois de subtrair 1 esse erro vira 11% do resultado.

Exemplo 2. Para x = 10⁸, √(x²+1) − x vale cerca de 5×10⁻⁹. Calculando direto, √(10¹⁶+1) é indistinguível de 10⁸ e o resultado é 0. Racionalizando, obtém-se uma forma equivalente sem a subtração:

√(x²+1) − x = 1 / (√(x²+1) + x)

Guarde 10⁸ em x e 1/(sqrt(x^2+1)+x) devolve 5×10⁻⁹ com precisão.

Exemplo 3. 1 − cos(10⁻⁸) vale cerca de 5×10⁻¹⁷, mas cos(10⁻⁸) é arredondado para exatamente 1 e o resultado direto é 0. Usando a identidade 1 − cos x = 2 sin²(x/2), 2sin(0.5E-8)^2 dá 5×10⁻¹⁷ (modo RAD).

Nenhuma quantidade de dígitos na tela resolve isso. É preciso reescrever a fórmula.

8. Dicas práticas

  • Não teste igualdade exata. Para comparar dois resultados calculados, verifique se a diferença entre eles é pequena o suficiente (por exemplo, erro relativo de 10⁻¹²).
  • Trate dinheiro em unidades inteiras. Trabalhe com a menor unidade monetária como inteiro, para que erros fracionários não se acumulem.
  • Evite subtrair números quase iguais. Racionalize, use identidades ou reorganize para eliminar a subtração.
  • Use razões com números grandes. Quando fatoriais ou potências explodem, use nCr, logaritmos ou simplifique os termos antes.
  • Não arredonde resultados intermediários. O erro da precisão dupla fica em torno de 10⁻¹⁶, mas arredondar à mão para quatro dígitos introduz erros da ordem de 10⁻⁴. Os erros maiores costumam vir das pessoas, não da máquina.
  • Experimente aumentar a exibição para 15 dígitos. Se um resultado parecer estranho, mostre mais dígitos para ver o valor interno e distinguir um erro nos últimos dígitos de uma fórmula de fato errada.

→ Abrir a calculadora Referência de funções

Última atualização: 2026-09-24