Saya menulis kode untuk mengurai string ekspresi matematis, dan memperhatikan bahwa urutan operator daya yang dirantai dievaluasi dalam Python berbeda dari urutan di Excel.
Dari http://docs.python.org/reference/expressions.html :
"Jadi, dalam urutan kekuatan dan operator yang tidak dipersonalisasi, operator dievaluasi dari kanan ke kiri (ini tidak membatasi urutan evaluasi untuk operan): -1 * 2 menghasilkan -1." *
Ini berarti bahwa, dalam Python:
2**2**3
dievaluasi sebagai2**(2**3) = 2**8 = 256
Di Excel, ia bekerja sebaliknya: 2^2^3
dievaluasi sebagai(2^2)^3 = 4^3 = 64
Saya sekarang harus memilih implementasi untuk parser saya sendiri. Perintah Excel lebih mudah diterapkan, karena mencerminkan urutan evaluasi multiplikasi.
Saya bertanya kepada beberapa orang di kantor apa yang mereka rasakan untuk evaluasi 2^2^3
dan mendapat tanggapan beragam.
Adakah yang tahu alasan atau pertimbangan yang mendukung implementasi Python? Dan jika Anda tidak memiliki jawaban, silakan komentari dengan hasil yang Anda dapatkan dari firasat - 64
atau 256
?
Jawaban:
Alasan mengapa dalam matematika eksponen bertumpuk berlaku dari atas ke bawah adalah cara lain Anda mendapatkan multiplikasi eksponen:
sumber
Wikipedia (dan guru matematika saya) memberi tahu saya: Eksponen yang ditumpuk diterapkan dari atas ke bawah.
Ini tercermin dari cara Python mengevaluasinya. Microsoft salah (sekali lagi)
Dan Ruby mengevaluasinya sebagai Python, jadi itu benar tanpa keraguan, karena Matz tidak mungkin salah.
sumber