【问题标题】:Why does 11 / 1 % 2 / 11 give a different answer than (11 / 1) % (2 / 11) in Python?为什么 11 / 1 % 2 / 11 在 Python 中给出的答案与 (11 / 1) % (2 / 11) 不同?
【发布时间】:2021-06-27 18:19:13
【问题描述】:

我刚刚在 Python 中玩算术运算符,就遇到了 Python 算术这个奇怪的东西。

>>> (11 / 1) % (2 / 11)
0.0909090909090906
>>> 11 / 1 % 2 / 11
0.09090909090909091

为什么这两个答案有区别?数学是一样的,为什么结果不一样?

【问题讨论】:

  • 这就像问为什么(1 + 2) * 3 给出的结果不是1 + 2 * 3
  • @DeepSpace 我猜这个没那么简单。如果您可以将相同的规则应用于上述问题,我将不胜感激.....
  • 就这么简单。括号改变运算顺序
  • @coderboy 由于% 和除法/ 具有相同的优先级,因此从左到右计算。而在 DeepSpaces 示例中,* 的优先级高于 +
  • 请从intro tour 重复on topichow to ask。 Stack Overflow 并不打算取代现有的文档和教程。我们希望您查找运算符优先级;这不是堆栈溢出问题。

标签: python python-3.x arithmetic-expressions


【解决方案1】:

/% 具有相同的 operator precedence。所以11 / 1 % 2 / 11是从左到右评估的,即((11 / 1) % 2) / 11

【讨论】:

  • 谢谢。我知道从左到右的计算,但无法将其应用于值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-23
  • 2016-08-30
  • 2013-07-27
  • 2014-11-11
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
相关资源
最近更新 更多