为什么 Math.pow() (有时) 在 JavaScript 中不等于 **?
2022-08-30 05:00:38
我刚刚发现 ECMAScript 7 功能是 (MDN Reference) 的替代方案,并在该帖子中遇到了一个讨论,其中它们的行为显然不同。我已经在Chrome 55中对其进行了测试,可以确认结果不同。a**b
Math.pow(a,b)
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;
}
调用返回 。diff(99)
0
为什么会发生这种情况?
正如xszaboj所指出的,这可以缩小到这个问题:
var x = 99;
x**x - 99**99; // Returns -5.311379928167671e+182