Ferramentas
Guias

Calculadora de expressões

Vida

Avalie com segurança uma expressão aritmética com + − × ÷ % ^ e parênteses. Sem eval, sem execução de código.

100% no cliente Sem backend
Suporta + − * / % ^ e (). Enter para avaliar.
Resultado —
Nesta página

O que é esta calculadora?#

É uma calculadora aritmética simples que avalia uma expressão matemática que você digita como texto — (12 * 1.08) + 7 ou 2^10 % 256 — e lhe devolve o número. Não há botões de função para picar; você escreve a expressão inteira e prime uma tecla.

A parte importante é como ela é construída. A maioria das calculadoras rápidas na web trapaceia entregando a sua string ao eval() do JavaScript, que executa qualquer código — bom para um brinquedo, feio no momento em que alguém cola algo esperto. Esta não faz isso: roda um parser recursivo-descendente escrito à mão que aceita apenas números, parênteses e os operadores + - * / % ^. Qualquer coisa fora dessa gramática é rejeitada na hora. O resultado é uma calculadora que genuinamente não consegue executar código, o que é exatamente o motivo pelo qual é segura para colar.

Como usar#

  1. Digite a sua expressão na caixa de Entrada. Espaços em branco são ignorados, então 1+2 e 1 + 2 são o mesmo.
  2. Operadores: + - * / para as quatro operações básicas, % para módulo (o resto), ^ para potência. Parênteses ( ) agrupam. Menos unário funciona, então -5 + 3 é -2.
  3. Decimais e notação científica são permitidos: 0.5, 1e3 (que é 1000), 2.5e-2.
  4. Clique em Avaliar (ou prima Enter). A linha de Resultado mostra o número, ou uma mensagem inline nomeando o problema — Divisão por zero, Carácter inesperado, Parênteses desequilibrados, e assim por diante — para que você possa corrigir a expressão em vez de adivinhar o que correu mal.
  5. O pó de vírgula flutuante binária é limpo automaticamente, então 0.1 + 0.2 mostra 0.3, não 0.30000000000000004.

Principais funcionalidades#

  • Sem eval, sem new Function, sem identificadores. Apenas números e sete caracteres de operador são aceites — uma gramática totalmente delimitada, não execução arbitrária de código.
  • Precedência correta de operadores (PEMDAS): parênteses, depois ^, depois * / %, depois + -.
  • Potência associativa à direita. 2^3^2 avalia do jeito que os matemáticos o escrevem (veja o exemplo prático).
  • Notação científica (6.022e23) e módulo (17 % 5) para contas reais de envelope.
  • Erros amigáveis e específicos que nomeiam a falha (divisão por zero, expressão truncada, número inválido) com a posição ofensiva, em vez de um NaN silencioso.

Exemplo prático#

Três expressões que mostram cada uma um comportamento diferente. Cole-as uma de cada vez.

Precedência e agrupamento de operadores.

(1 + 2) * 3 ^ 2

Resultado: 27. Os parênteses forçam 1 + 2 = 3 primeiro; depois 3 ^ 2 é avaliado antes da multiplicação (potência liga-se mais forte do que *), dando 9; por fim 3 * 9 = 27. Sem os parênteses, 1 + 2 * 3 ^ 2 seria 1 + 18 = 19.

Potência associativa à direita.

2 ^ 3 ^ 2

Resultado: 512, não 64. Potência associa à direita, então isto é 2 ^ (3 ^ 2) = 2 ^ 9 = 512. Se você queria mesmo (2 ^ 3) ^ 2 = 64, escreva os parênteses.

Pó binário removido.

0.1 + 0.2

Resultado: 0.3. A soma bruta em vírgula flutuante binária é 0.30000000000000004; o formatador arredonda-a de volta a um número sensato de algarismos significativos para que a resposta se leia como um humano espera.

FAQ#

Por que não posso usar sin, log, sqrt ou pi?#

Porque esses são identificadores, e identificadores não fazem parte da gramática por propósito. Todo nome é rejeitado como um Carácter inesperado — essa é a linha que impede a calculadora de alguma vez executar código. Se você precisa de sqrt(16), reescreva-o como 16 ^ 0.5; para log e sin, use uma calculadora científica.

2^3^2 dá 512 ou 64?#

512. O operador ^ é associativo à direita, correspondendo à convenção usada na matemática e na maioria dos operadores de potência das linguagens de programação. 2^3^2 lê-se como 2^(3^2). Para obter 64, escreva (2^3)^2.

O que é que o operador % faz aqui?#

É módulo — o resto depois da divisão inteira — não “percentagem”. 17 % 5 é 2, porque 17 dividido por 5 deixa um resto de 2. É útil para “este número é par?” (n % 2), para envolver valores numa faixa, ou para aritmética de relógio. Tem a mesma precedência que * e /.

A minha expressão é enviada para um servidor?#

Não. Análise e avaliação acontecem inteiramente no seu navegador com um parser escrito à mão — não há backend, e a entrada nunca sai da página.