Math.pow(64,1 / 3)返回不精确的4

时间:2016-02-22 03:49:48

标签: javascript math precision

我今天在JavaScript中玩Math.pow(),当时我注意到:

  1. Math.pow(8, 1/3)Math.pow(27, 1/3)分别返回2和3
  2. Math.pow(64, 1/3)和所有其他更高的完美正方形返回长近似浮点数,例如3.99999999999999996。
  3. Test in Google Chrome's Developer Tools' Console

    我已经听说过浮点精度以及一些小数如何看起来不准确,但这对我来说很突出,因为它只发生在四立方(64)。任何人都可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:3)

首先,ECMA-262不对Math.pow返回的结果的精度做出任何保证。它声明:

  

返回与结果相关的依赖于实现的近似值   将x提高到y。

因此,对于不同的实现,您获得的可能会有所不同。

我假设1号,8号和27号的立方根分别与精确的1,2和3的偏差很小,以至于它不会反映为结果中的一部分。但是当考虑的数量变大时,与之相关的错误也会变大。

注意:

Math.pow(1000,1/3)
-> 9.999999999999998

Math.pow(1000000,1/3)
->99.99999999999997

它将继续偏离整数值。