Calculadora de números enormes|Soma, subtração, multiplicação e potência sem limite de dígitos (BigInt)

Ferramenta gratuita para calcular com exatidão inteiros enormes, sem erro de arredondamento. Usa o BigInt do JavaScript para realizar somas, subtrações, multiplicações, divisões inteiras (quociente e resto) e potências exatas mesmo acima de 9.007.199.254.740.991 (2^53 − 1).

Por que a precisão falha além de 2^53

Uma calculadora comum ou o tipo Number do JavaScript deixam de distinguir inteiros consecutivos além de 2^53 (Number.MAX_SAFE_INTEGER). O BigInt permite calcular com exatidão mesmo além desse limite.

Number.MAX_SAFE_INTEGER 9,007,199,254,740,991(253 − 1)
9007199254740992 + 1 Number: 9007199254740992(誤り) / BigInt: 9007199254740993(正確)

Dicas

  • Calculadoras e planilhas comuns perdem precisão além de 2^53 (cerca de 9 quatrilhões), mas esta ferramenta usa BigInt para calcular com exatidão, sem limite de dígitos.
  • A divisão inteira (÷) mostra o quociente e o resto ao mesmo tempo, útil para conferir operações de módulo usadas em criptografia e funções hash.
  • O expoente é limitado a 1.000.000 por segurança, já que um expoente ilimitado poderia travar o navegador.
  • Você pode colar números com separador de milhar (por exemplo 1.234.567): eles são removidos automaticamente antes do cálculo.
  • Clique em "Inserir exemplo" para preencher automaticamente um caso que ultrapassa 2^53 e ver na hora a diferença em relação a uma calculadora comum.

Perguntas frequentes

O tipo Number comum do JavaScript é um número de ponto flutuante de precisão dupla (IEEE 754), que só consegue representar com segurança inteiros até 2^53 − 1 (9.007.199.254.740.991). Além desse limite, inteiros consecutivos se tornam indistinguíveis e os cálculos perdem precisão. Esta ferramenta evita completamente esse limite usando o tipo BigInt.

Não. O BigInt é um tipo do JavaScript pensado para admitir apenas inteiros, e não consegue representar frações. Para cálculos com casas decimais, use a nossa Calculadora comum.

O resto é A − (quociente × B), em que o quociente é truncado em direção a zero. Por exemplo, −7 ÷ 2 resulta em quociente −3 e resto −1.

É útil sempre que uma calculadora comum não tem precisão suficiente: conferir operações com chaves RSA (centenas a milhares de dígitos), calcular fatoriais enormes ou verificar aritmética de precisão arbitrária em programação competitiva.

Não há um limite fixo, mas a memória e a velocidade de processamento do navegador impõem restrições práticas. Números com milhares de dígitos são calculados instantaneamente; casos extremos (como um expoente acima de 1.000.000) são limitados por segurança.
ツールくん

Curiosidade — Por que os computadores não lidam bem com números enormes

A representação numérica nos computadores sempre teve um limite rígido. O tipo de ponto flutuante de 64 bits (precisão dupla), padrão na maioria das linguagens de programação, só consegue representar com segurança inteiros até 2^53 − 1 (9.007.199.254.740.991), porque sua mantissa tem apenas 53 bits. Além disso, surgem erros de arredondamento ao representar esses inteiros. A nossa própria ferramenta Calculadora tem exatamente essa mesma limitação de precisão.

Os inteiros de precisão arbitrária (conhecidos como "bignums") resolvem esse problema. Por volta de 2020, o JavaScript passou a incluir um novo tipo chamado BigInt em todos os navegadores principais, permitindo aritmética inteira exata sem limite de dígitos além da memória disponível. Internamente, um bignum é armazenado como uma sequência de blocos de dígitos, então o tempo de cálculo cresce com o número de dígitos — há uma troca real entre exatidão e velocidade.

Essa tecnologia é indispensável em criptografia. Chaves RSA, por exemplo, costumam usar inteiros de 2048 bits (mais de 600 dígitos decimais), e bibliotecas de precisão arbitrária são usadas no mundo todo para calcular as multiplicações e exponenciações modulares exigidas por essas chaves.

A programação competitiva costuma envolver fatoriais enormes (100! tem 158 dígitos) ou termos distantes da sequência de Fibonacci. Os tipos numéricos comuns acumulam erro no meio desses cálculos, então dominar bignums muitas vezes separa uma solução correta de uma incorreta.

→ Ver todas as curiosidades