Я пишу код для разбора строк математических выражений и заметил, что порядок, в котором цепочечные операторы вычисляются в Python, отличается от порядка в Excel.
С http://docs.python.org/reference/expressions.html :
«Таким образом, в непереносимой последовательности степенных и унарных операторов операторы оцениваются справа налево (это не ограничивает порядок вычисления для операндов): -1 * 2 приводит к -1». *
Это означает, что в Python:
2**2**3
оценивается как2**(2**3) = 2**8 = 256
В Excel это работает наоборот: 2^2^3
оценивается как(2^2)^3 = 4^3 = 64
Теперь мне нужно выбрать реализацию для моего собственного парсера. Порядок Excel проще реализовать, поскольку он отражает порядок вычисления умножения.
Я спросил у некоторых людей в офисе, каково их внутреннее чувство для оценки, 2^2^3
и получил смешанные ответы.
Кто-нибудь знает какие-либо веские причины или выводы в пользу реализации Python? И если у вас нет ответа, пожалуйста, прокомментируйте результат, который вы получаете от интуиции - 64
или 256
?