1
为什么JavaScript中Math.pow()(有时)不等于**?
我刚刚发现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; } 打电话diff(99)的回报0。 为什么会这样呢? 正如xszaboj所指出的,可以缩小到这个问题: var x = 99; x**x - 99**99; // Returns -5.311379928167671e+182