在BODMAS规则中,运算的顺序是括号、顺序、除法、乘法、加法和subtraction.here除法,乘法、加法和减法在递减、递增、递增和递减之后。order.the BODMAS规则级数不遵循相同的order.And我的问题是为什么加法之后是减法而不是减法之后是加法。
发布于 2013-04-06 19:20:53
BODMAS或BOMDSA是完全相同的,因为乘法/除法和加法/减法处于相同的优先级(实际上,它们应该更正确地写成B O DM AS,在不同的组中使用您喜欢的顺序);正如相关的Wikipedia page所说的那样
当以这种方式编写时,这些助记符可能会产生误导,特别是如果用户不知道乘法和除法以及加法和减法具有相同的优先级。
换句话说,您缺少的是通常情况下(无论是在“手动”做数学时还是在任何正常的编程语言中),运算符实际上是按优先级分组的,其中乘法和除法具有相同的优先级(以及和减法)。所以,你的"BODMAS规则“实际上是:
()
**
* /
+ - (我使用**作为求幂运算符-就像在Python中一样,因为-没有提供;另外,这里的()是分组符号,而不是运算符)
同一行上的运算符的优先级由它们在表达式中的顺序和结合性决定(对于算术运算符,它是从左到右的,尽管对于幂运算没有很好的定义)。
虽然对于实数上的数学来说,这并不是真正相关的,除非谈论除法(加法和减法是结合的,如果你认为减法是“相反的相加”),但在编程中它是双重重要的,因为FP数字和整数上的数学通常是不结合的。
此外,编程语言提供了更多的运算符,而不是结合/交换运算符,这些运算符具有不同的结合性和不太完善的优先规则,因此它们以更精细的方式指定运算符优先规则是很正常的。
例如,参见operator precedence and associativity table of Java:它比简单的"BODMAS规则“复杂得多,后者不足以正确地表达它(因为有许多类,每个类中有更多的运算符,具有不同结合性的类,等等)。
发布于 2013-04-06 19:02:07
这只是一个术语,在数学上,如果你+然后-或者然后+,那么结果是一样的,对于*和/也是如此。
(x - y) = (-y + x) And (x*y)/z = x*(y/z) And x-y*z = x-(y*z) = -(y*z)+x唯一重要的是,你必须有计算*,/之前+,-对应于它们所在的括号。
https://stackoverflow.com/questions/15849990
复制相似问题