2017-09-23 606 views
2

請有人向我解釋爲什麼表達式2 + 4/2 * 3的計算結果爲8.0而不是2.66?Python數學運算順序

我認爲乘法是在分割之前進行的,但是在這種情況下,似乎是在乘法之前執行除法操作。

+1

'/'和'*'是一個接一個地執行的,沒有優先級,除非你把它們放在括號內:2 + 4 /(2 * 3)。 – Ardit

回答

4

因爲它的評價爲:

2 + ((4/2) * 3) 

因爲*/higher precedence+和它的左到右,當運營商具有相同的優先級。

從文檔引用:

下表概括了在Python最高優先級的運算符優先級,從優先級最低(最低結合)(最結合)。同一個框中的運算符具有相同的優先級。除非明確給出語法,否則運算符是二進制的。同一個盒子組中的操作員從左到右(除了取冪,從右到左分組)。

運算符描述

  • [...]
  • +-加減
  • *@///%乘法,矩陣乘法,除法,地板除法,餘數
  • [...]
2

是的,除法和乘法首先計算,但乘法不是在除法之前執行,反之亦然。所以: 2 + 4/2 * 3 = 2+2*3 = 2+6 = 8
1.()
2%,/,*
3 +, -

-1

的Python遵循BODMAS規則,你可以說PEMDAS規則。 *括號*指數*乘*除*加*減法

0
  • Python的基礎則算遵循BODMAS規則,由於按照分工優先的比multiplication.So高不言而喻這樣: 2+(4/2)* 3
  • 現在如果你想得到2.66作爲你的答案,它必須像2 + 4 /(2 * 3)
+0

如果你想要2。66你還需要python 3 :) –

+0

根據傳統的操作順序,乘法和除法有*相同*優先級;在這種情況下首先完成劃分,因爲它是最左邊的操作。 – trentcl

2

Python給乘法和除法相同的優先級。

通常,按照從左到右的順序執行相同的優先級操作。