0

在 BODMAS 规则中,运算的顺序是括号、顺序、除法、乘法加减法。这里除法、乘法、加法和减法遵循递减、递增、递增和递减顺序。BODMAS 规则系列不遵循相同的顺序。并且我的问题是为什么加法之后是减法,而不是减法之后是加法。

4

3 回答 3

7

BODMAS 或 BOMDSA 完全相同,因为乘法/除法和加法/减法具有相同的优先级(实际上,它们应该更正确地写为B O DM AS,在各个组中使用您喜欢的任何顺序);正如相关的维基百科页面所说:

以这种方式编写这些助记符可能会产生误导,特别是如果用户不知道乘法和除法具有相同的优先级,加法和减法也是如此

换句话说,您缺少的是通常(无论是在“手动”进行数学运算时还是在任何理智的编程语言中)运算符实际上都是按优先级分类的,其中乘法和除法具有相同的优先级(以及和和减法)。因此,您的“BODMAS 规则”实际上是:

() 
**
* /
+ - 

(我**用作指数运算符 - 就像在 Python 中一样 - 因为 Java 不提供;另外, () 这里是分组符号,而不是运算符)

同一行上的运算符的优先级由它们在表达式中的顺序和它们的结合性(对于算术运算符来说,是从左到右的,尽管对于幂运算没有很好的定义)。

尽管对于实数上的数学,除非谈论除法(加法和减法是关联的,如果您将减法视为“相反的加法”),否则在编程中它具有双重重要性,因为关于 FP 数和整数的数学是往往没有关联。

此外,编程语言提供了更多的运算符,而不是关联/交换,具有不同的关联性和不那么完善的优先规则,因此它们以更精细的方式指定运算符优先级规则是正常的。

例如,参见Java 的运算符优先级和关联性表:它比简单的“BODMAS 规则”复杂得多,不足以正确表达它(因为有很多类,每个类中有更多的运算符,具有不同关联性的类,. ..)。

于 2013-04-06T11:20:53.413 回答
1

在 Java 中,减法和加法都是,奇怪的是,加法。减法只是一个负数的加法。

例如:

int x = 1;
int y = 2;
int z = x - y; // Is actually x + (-y)
于 2013-04-06T10:55:55.320 回答
0

好吧,它只是一个术语,在数学中,如果你 + 然后 - 或 - 然后 +,它会给出相同的结果,* 和 / 也是如此。

(x - y) = (-y + x) And (x*y)/z = x*(y/z) And x-y*z = x-(y*z) = -(y*z)+x

唯一重要的是,您必须在 +,- 之前计算 *,/ 对应于它们所在的括号。

于 2013-04-06T11:02:07.387 回答