J'écris du code pour analyser les chaînes d'expression mathématique et j'ai remarqué que l'ordre dans lequel les opérateurs de puissance chaînés sont évalués en Python diffère de l'ordre dans Excel.
Sur http://docs.python.org/reference/expressions.html :
"Ainsi, dans une séquence sans parenthèse de puissance et d'opérateurs unaires, les opérateurs sont évalués de droite à gauche (cela ne contraint pas l'ordre d'évaluation des opérandes): -1 * 2 donne -1." *
Cela signifie qu'en Python:
2**2**3
est évalué comme2**(2**3) = 2**8 = 256
Dans Excel, cela fonctionne dans l'autre sens: 2^2^3
est évalué comme(2^2)^3 = 4^3 = 64
Je dois maintenant choisir une implémentation pour mon propre analyseur. L'ordre Excel est plus facile à implémenter, car il reflète l'ordre d'évaluation de la multiplication.
J'ai demandé à certaines personnes dans le bureau ce que leur instinct ressentait pour l'évaluation 2^2^3
et j'ai obtenu des réponses mitigées.
Est-ce que quelqu'un connaît de bonnes raisons ou des discussions en faveur de l'implémentation de Python? Et si vous n'avez pas de réponse, veuillez commenter avec le résultat que vous obtenez de l'intestin - 64
ou 256
?