Esta es una referencia de los resultados que dan diferentes lenguajes y herramientas ante las expresiones -3^2 y 2^2^3, sin paréntesis. En el primer renglón está la referencia de lo que dictan las matemáticas.
No significa que los lenguajes estén mal. Simplemente su algoritmo de parseo es diferente. Lo que importa es que el comportamiento esté debidamente documentado.
Esto salió tras una discusión sobre LibreOffice Calc.
Nota: algunos lenguajes tienen un operador ^
que no corresponde a la exponenciación sino a la operación binaria XOR; otros lenguajes manejan la exponenciación por medio de la función pow()
, lo cual elimina cualquier posibilidad de ambigüedad.
-3^2 |
2^2^3 |
Notas | Documentación | |
Álgebra | -9 | 256 | La notación es -32 y 223 | ? |
Python 2 y 3 | -9 | 256 | El operador es ** . |
https://docs.python.org/3/reference/expressions.html#operator-precedence |
LibreOffice Writer (tablas) | -9 | 256 | https://help.libreoffice.org/latest/es/text/swriter/02/14020000.html | |
PHP | -9 | 256 | El operador es ** . |
https://www.php.net/manual/es/language.operators.precedence.php |
PostgreSQL | 9 | 64 | https://www.postgresql.org/docs/current/functions-math.html | |
LibreOffice Calc | 9 | 64 | https://help.libreoffice.org/latest/es/text/scalc/01/04060199.html | |
Microsoft Excel | 9 | 64 | https://support.microsoft.com/en-us/office/the-order-in-which-excel-performs-operations-in-formulas-28eaf0d7-7058-4eff-a8ea-0a835fafadb8 | |
LibreOffice Basic | 9 | 64 | https://help.libreoffice.org/latest/en-US/text/sbasic/shared/03070500.html | |
Bash | 9 | 256 | El operador es ** . |
https://www.gnu.org/software/bash/manual/html_node/Shell-Arithmetic.html |