最佳答案
我刚刚发现 ECMAScript 7的特性 a**b
是 Math.pow(a,b)
(MDN 参考资料)的替代品,并在 that post中遇到了一个讨论,在这个讨论中,它们的表现明显不同。我已经在 Chrome55中测试过了,可以确认结果是不同的。
返回 3.697296376497263e+197
然而呢
返回 3.697296376497268e+197
因此,记录差异 Math.pow(99,99) - 99**99
导致 -5.311379928167671e+182
。
到目前为止,我们可以说,它只是另一个实现,但是将它包装在一个函数中的行为又不同了:
function diff(x) {
return Math.pow(x,x) - x**x;
}
调用 diff(99)
返回 0
。
为什么会这样?
正如 Xszaboj指出的那样,这个问题可以缩小到以下几个方面:
var x = 99;
x**x - 99**99; // Returns -5.311379928167671e+182