奇怪的Javascript计算

时间:2019-01-08 16:19:35

标签: javascript

为什么使用javascript时此公式返回-Infinity

793 * ( 1 - ( 1 + Math.pow(.032 / 12 , (-1 * (30 * 12))))) / (.032 / 12);

3 个答案:

答案 0 :(得分:3)

因为这是正确的答案!

Math.pow部分等效于以下内容:

Math.pow(0.0026666666666666666, -360)

哪个结果为Infinity

然后,将其乘以-1,然后将其乘以/除以正数,考虑到其为-Infinity,这不会影响结果。

答案 1 :(得分:2)

其要旨来自Math.pow(.032 / 12 , (-1 * (30 * 12)))。您要取一个很小的数字(0.032 / 12),并取一个大的负功率(-1 * 30 * 12)。

从数学上讲,这与取一个正常大小的数字并将其取一个大数字相同–您基本上是在计算375**360,这显然是无穷大。其余的数字最终变成-Infinity而不是Infinity

答案 2 :(得分:1)

根据MDN

  

MAX_VALUE属性的值约为1.79E + 308或21024。大于MAX_VALUE的值表示为“无穷大”。

计算的这一部分Math.pow(.032 / 12 , (-1 * (30 * 12)))等于

  

4.4797768587048112310581443943723309108149091701091649×10 ^ 926

哪个比Number.MAX_VALUE大,所以用Infinity表示。
之后,您基本上只需添加和翻转符号即可。