JS sum与Math.pow()的答案不同



我正在把头发扯掉,这可能是一个非常简单的

我有一个方程式:

((100000 + (2400 / 0.04)) * ((1 + 0.04)**5) - (2400 / 0.04)) * 0.99

谷歌计算器给了我需要的答案,是133317.82

在我的控制台中,这也给了我133317.82,这是正确的

以下内容应该是等效的,但给出了完全不同的答案?

(100000 + (2400 / 0.04)) * (Math.pow((1 + 0.04),5) - (2400 / 0.04)) * 0.99

我把括号弄混了吗?Math.pow不起作用吗Math.pow(基数,指数(?

您可以使用以下表达式。(我去掉了多余的括号。(

console.log(((100000 + 2400 / 0.04) * Math.pow(1 + 0.04, 5) - 2400 / 0.04) * 0.99);

两个表达式之间的括号不同:

((100000 + (2400 / 0.04)) * (Math.pow(1 + 0.04,5)) - (2400 / 0.04)) * 0.99

工作正常。最初,第二个表达式没有对乘以0.99的整个子表达式进行分组。

这两个表达式有不同的括号,导致它们的求值方式不同。

让我们分解一下常见的元素:

a = (100000 + (2400 / 0.04));
b1 = ((1 + 0.04)**5);
b2 = Math.pow((1 + 0.04),5);
c = (2400 / 0.04);

使用这个映射,你的第一个表达式是:

(a * b1 - c) * 0.99

第二个是:

a * (b2 - c) * 0.99

你应该能够清楚地看到,在第二个表达式中,你改变了括号的分组,只从b2而不是(a * b2)中减去了c。如果你修正括号,两者是一样的。

console.log(((100000 + (2400 / 0.04)) * Math.pow(1 + 0.04, 5) - (2400 / 0.04)) * 0.99);

最新更新