Evaluador de expresiones matemáticas
WebTodo se ejecuta en tu navegador: no se sube nada
Una expresión por línea, un resultado por línea. Compatible con `+ - * / %` y `^` para potencias, paréntesis y signos unarios, las constantes `pi` y `e`, y las funciones `sqrt` `abs` `round` `floor` `ceil` `exp` `log` `log2` `log10` `min` `max` `pow`. ⚠️ Esta herramienta no usa `eval`, y no es un capricho. Una versión basada en `eval` ejecuta lo que haya en la caja dentro de la página actual: `fetch("/x")` se dispara de verdad, `location="https://…"` navega de verdad, y esta página guarda otros datos. El parche habitual es una regex que solo permite dígitos y operadores, y esas regex son famosas por dejar escapar cosas. Así que aquí el analizador, la precedencia y la evaluación están escritos a mano (algoritmo de shunting-yard a notación postfija, y luego evaluar), y todo lo que salga de los caracteres listados se rechaza sin más. Dos cosas conviene saber de antemano. El acento circunflejo es la potencia, no un xor bit a bit, y es asociativo por la derecha, así que `2^3^2` es 512 y no 64. Y las funciones trigonométricas convierten tanto su entrada como su salida, porque cambiar solo una de las dos hace que `sin(asin(0.5))` deje de ser 0.5.
Funciones
- Aritmética, resto, potencias y paréntesis, con signos unarios (`-3`, `2 * -3` y `2^-1` funcionan)
- ⚠️ El acento circunflejo es una potencia y asociativa por la derecha: `2^3^2` es 512. Para el xor bit a bit usa la herramienta de operaciones de bits
- Las constantes `pi` y `e`, y las funciones sqrt, abs, round, floor, ceil, exp, log, log2, log10, min, max, pow
- Los ángulos cambian entre radianes y grados, convirtiendo entrada y salida a la vez (`sin(30)` da 0.5 en grados)
- Define variables como `a=3` y úsalas en las expresiones; las definiciones posteriores ven las anteriores
- Redondea a un número de decimales elegido mientras la precisión completa sigue visible en su propia línea
- Una expresión por línea, así que se puede calcular una columna entera de golpe
- ⚠️ El evaluador está escrito a mano y sin `eval`; se rechaza cualquier nombre fuera de las tablas de constantes y funciones
- Todo se ejecuta en tu navegador; las expresiones no salen de él
Cómo se usa
- Pega una expresión por línea
- Cambia a grados si lo necesitas, y define variables si quieres reutilizar valores intermedios
- Pon un número de decimales si quieres redondear; el valor exacto se muestra aparte
- Copia un solo resultado o la lista entera
Preguntas frecuentes
- ¿Por qué merece la pena mencionar que se evita eval?
- Porque `eval` es la manera fácil de construir esta herramienta, y trata la entrada como código de la página actual: `fetch("/x")` envía una petición, `location="https://…"` navega fuera, y `constructor.constructor("…")()` rodea casi todas las listas negras. La mitigación habitual, una regex que solo permite dígitos y operadores, tampoco es sólida, y falla en silencio. Así que aquí el tokenizador, la precedencia y la evaluación están escritos a mano. El coste es que no se pueden admitir funciones arbitrarias; la ventaja es que nada de la entrada puede ejecutarse salvo los números, operadores, paréntesis y nombres de función listados.
- ¿Funciona `2^-1`, con el menos a la derecha de la potencia?
- Sí. El menos unario tiene la precedencia más alta, así que `2^-1` se lee como `2^(-1)` y da 0.5. Algunas implementaciones reescriben un menos inicial como multiplicar por -1, lo que se desmorona justo en esta posición, así que aquí se usa un operador unario propio.
- ¿Cómo funcionan las variables?
- Una definición por línea en la caja de variables, como `a=3`. El lado derecho puede ser una expresión (`b=a*3`), y las definiciones posteriores pueden usar las anteriores, así que `a=2` en una línea hace válido `b=a*3` en la siguiente. Los nombres de variable no distinguen mayúsculas, pero las constantes ganan: definir `pi=3` no oculta el π real.
- ¿Por qué `1/0` no me da directamente Infinity?
- Porque Infinity es casi siempre una señal de que algo está mal, más que la respuesta que buscabas. La división por cero, la raíz cuadrada de un negativo y un logaritmo con cero o un negativo lo producen, por tres motivos sin relación entre sí. Devolver Infinity te deja adivinando cuál de los tres ha pasado, así que los tres se reportan juntos como resultado infinito o indefinido, con las causas habituales listadas.
Herramientas relacionadas
Calculadora de bits
ConversiónDiez operaciones bit a bit: AND, OR, XOR, XNOR, NAND, NOR, NOT, desplazamientos e inversión, con cada resultado en decimal, binario y hexadecimal.
Calculadora de bases
ConversiónAritmética en binario, octal, decimal o hexadecimal con BigInt exacto y sin desbordamiento circular; la división da además el resto.
Calculadora de fracciones
ConversiónSimplifica fracciones, calcula el máximo común divisor y el mínimo común múltiplo, convierte decimales en fracciones y opera con fracciones.
Analizador de URL
WebDescompone una URL en esquema, host, puerto, ruta, parámetros y ancla, con cada parámetro en crudo y decodificado. Todo en tu navegador.
Analizador de UA
WebAnaliza un User-Agent: navegador, versión, sistema, tipo de dispositivo y motor, con las reglas que coinciden. Solo coincidencia de patrones.
Códigos de estado HTTP
WebConsulta un código de estado HTTP: significado, clase 1xx–5xx, usos típicos y trampas habituales. También busca por palabra clave. Todo local.