JavaScript做数学计算的时候做PEMDAS吗?

Does JavaScript do PEMDAS when doing mathematical calculations?

下面一行:

console.log(ship.x + " + " + (4/3) + " * " + ship.r + " * " + Math.cos(ship.a));

returns:

50 + 1.3333333333333333 * 15 * 6.123233995736766e-17

然而,当我实际使用 JavaScript 进行数学运算时:

console.log(ship.x + 4 / 3 * ship.r * Math.cos(ship.a));

它returns'50'的整数值?这怎么可能?该行中的第一个值是 50,因此您会认为它在逻辑上是一个更大的数字,一旦它是 运行。我已经尝试过 PEMDAS 和许多其他变体,但从未以 50 的值结束。JavaScript 对上述代码到底做了什么?这是整个代码页的 link:https://codepen.io/hoyos/pen/vYJqaRw?editors=0010

Calculuswhiz 的评论是正确的。浮点数学无法处理您的数字 (6e-17) 的大小,因此您最终得到 50 + 1.33333 * 15 * 0,即 50 + 0

查看此问题的批准答案以了解更多详细信息: Is floating point math broken?