2017-09-23 611 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给乘法和除法相同的优先级。

通常,按照从左到右的顺序执行相同的优先级操作。