Я пишу код для розбору рядків математичних виразів і зауважив, що порядок, в якому ланцюгові оператори електроенергії оцінюються в 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
?