Javascript是否会违反数学PEMDAS惯例?

bar*_*lop -2 javascript math operator-precedence

我被教导在数学中我们评估事物,首字母缩略词BODMAS Brackets,Orders(powers),Division,Multiplication,Addition,Subtraction.

我理解在Javascript中,*并且/具有相同的优先级.+-做.并且使用左关联性.

从我能想到的几个例子来看,它似乎同样有效,产生与BODMA相同的结果.

看起来在数学规则的实际情况中,首先进行加法或减法并不重要.是否可以在5-2 + 3之前完成附加或减法可能很重要.而对于除法和乘法,似乎只有一个问题,当除法时,除了9/3*4 必须首先进行除法.并且Javascript在该实例中首先执行.

但也许有一个例子可以打破它!它给标准数学带来了不同的结果.

Javascript可以打破逻辑数学规则吗?

最新情况:

为了回答自己,在数学时,人们说,PEDMAS D和M优先级相同,从左到右完成.并且同上A和S.你说他们是左联想的,即暗示括号的地方.因此,编程语言"实现PEDMAS"的优先级/优先级,DM和AS是左关联的,完全遵循PEDMAS规则.因此,如果有任何数学规则的破坏,则不是来自M,D,A,S的相关性,这与(常规)数学相同.此外,在数学中,一元减去这里是 - PEUDMAS所以-5 ^ 2 = - (5 ^ 2)= - 25.指数优先于一元减去.虽然javascript可能正确.显然,javascript破坏规则中的浮点,如某些答案中所示,尽管这不是我想到的,因为我的想法纯粹是PEDMAS,但似乎括号与浮点数有所不同,他们不应该在那里在正常的数学中,正如我接受的答案所示.

hel*_*y0d 5

唯一的问题是浮点数,其中一个除法的近似值非常大.一个实际的例子是,这将始终警告错误:

var a = 0.1;
var b = 0.2;
var c = 0.3;
if((a+b)+c == a+(b+c))
    alert("true");
else
    alert("false");
Run Code Online (Sandbox Code Playgroud)

所以基本上问题在于Number对象,但没有实现理论数学.作为一个程序员,你可能理解前后增量的差异和运算符的顺序,所以我真的不明白为什么你给出9/3*4了程序员逻辑适用的例子,并且实际数学很冗长.

最后你寻求的答案(可能只是出于好奇)是你所知道的数学的实际逻辑在JavaScript中没有改变,只是来自这种语言根源的一些错误仍然困扰着我们今天.