小编Tho*_*ann的帖子

为什么Math.pow()(有时)在JavaScript中不等于**?

我刚刚发现ECMAScript 7功能a**b作为Math.pow(a,b)(MDN参考)的替代方案,并且在该帖子中遇到了一个讨论,其中他们显然表现不同.我在Chrome 55中测试了它,可以确认结果有所不同.

Math.pow(99,99) 回报 3.697296376497263e+197

99**99 回报 3.697296376497268e+197

因此记录差异会Math.pow(99,99) - 99**99导致-5.311379928167671e+182.

到目前为止可以说,它只是另一种实现,但将它包装在一个函数中的行为又有所不同:

function diff(x) {
  return Math.pow(x,x) - x**x;
}
Run Code Online (Sandbox Code Playgroud)

调用diff(99)返回0.

为什么会这样?

正如xszaboj指出的那样,这可以缩小到这个问题:

var x = 99;
x**x - 99**99; // Returns -5.311379928167671e+182
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome v8 ecmascript-7

114
推荐指数
1
解决办法
7766
查看次数

标签 统计

ecmascript-7 ×1

google-chrome ×1

javascript ×1

v8 ×1