Tôi đang viết mã để phân tích các chuỗi biểu thức toán học và nhận thấy rằng thứ tự các toán tử công suất chuỗi được đánh giá trong Python khác với thứ tự trong Excel.
Từ http://docs.python.org/reference/expressions.html :
"Do đó, trong một chuỗi các toán tử công suất và đơn nguyên, các toán tử được ước lượng từ phải sang trái (điều này không ràng buộc thứ tự đánh giá cho các toán hạng): -1 * 2 cho kết quả -1." *
Điều này có nghĩa là, trong Python:
2**2**3
được đánh giá là2**(2**3) = 2**8 = 256
Trong Excel, nó hoạt động theo cách khác: 2^2^3
được đánh giá là(2^2)^3 = 4^3 = 64
Bây giờ tôi phải chọn một triển khai cho trình phân tích cú pháp của riêng tôi. Thứ tự Excel dễ thực hiện hơn, vì nó phản ánh thứ tự đánh giá của phép nhân.
Tôi đã hỏi một số người xung quanh văn phòng rằng cảm giác ruột của họ là gì để đánh giá 2^2^3
và nhận được những phản hồi trái chiều.
Có ai biết bất kỳ lý do chính đáng hoặc sự can thiệp nào có lợi cho việc triển khai Python không? Và nếu bạn không có câu trả lời, vui lòng bình luận với kết quả bạn nhận được từ cảm giác ruột - 64
hay 256
?