"BODMAS"一词是什么意思?

Gat*_*ler 16 math

什么是BODMAS,为什么它在编程中有用?

Mic*_*tum 20

http://www.easymaths.com/What_on_earth_is_Bodmas.htm:

您认为2 + 3 x 5的答案是什么?

是(2 + 3)x 5 = 5 x 5 = 25?

或2 +(3 x 5)= 2 + 15 = 17?

BODMAS可以拯救并给我们遵守规则,以便我们始终得到正确的答案:

(B)球拍(O)rder(D)ivision(M)ultiplication(A)ddition(S)ubtraction

根据BODMAS,乘法应该总是在加法之前完成,因此17根据BODMAS实际上是正确的答案,并且如果你输入2 + 3 x 5,也将是你的计算器给出的答案.

为什么它在编程中有用?不知道,但我认为这是因为你可以摆脱一些括号?我是一个非常防守的程序员,所以我的线条看起来像这样:

result = (((i + 4) - (a + b)) * MAGIC_NUMBER) - ANOTHER_MAGIC_NUMBER;
Run Code Online (Sandbox Code Playgroud)

使用BODMAS,您可以更清楚地说明这一点:

result = (i + 4 - (a + b)) * MAGIC_NUMBER - ANOTHER_MAGIC_NUMBER;
Run Code Online (Sandbox Code Playgroud)

我想我仍然使用第一个变体 - 更多括号,但是这样我不需要学习另一个规则而且我会忘记忘记它并导致那些奇怪的难以调试错误的风险?

只是猜测那个部分.

Mike Stone编辑:修正了Gaius指出的数学问题


Chr*_*ard 8

另一个版本(在中学)是"请原谅我亲爱的莎莉阿姨".

  • 括弧
  • 指数
  • 乘法
  • 加成
  • 减法

助记设备在学校很有用,并且在今天的编程中仍然有用.


Pat*_*ney 5

表达式中的操作顺序,例如:

foo * (bar + baz^2 / foo) 
Run Code Online (Sandbox Code Playgroud)
  • 首先是B球拍
  • O rders(即权力和平方根等)
  • D ivision和M ultiplication (从左到右)
  • 一个 ddition和小号 ubtraction(左到右)

来源:http://www.mathsisfun.com/operation-order-bodmas.html


Jam*_*sen 5

我没有权力编辑@Michael Stum的答案,但这不太正确.他减少了

(i + 4) - (a + b)
Run Code Online (Sandbox Code Playgroud)

(i + 4 - a + b)
Run Code Online (Sandbox Code Playgroud)

他们并不等同.对于整个表达,我可以获得的最佳减少是

((i + 4) - (a + b)) * MAGIC_NUMBER - ANOTHER_MAGIC_NUMBER;
Run Code Online (Sandbox Code Playgroud)

要么

(i + 4 - a - b) * MAGIC_NUMBER - ANOTHER_MAGIC_NUMBER;
Run Code Online (Sandbox Code Playgroud)