Я только что обнаружил функцию 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
`likethis`
чтобы сделать его читабельным, а также избежать проблем с жирным / курсивом