Щойно я виявив функцію ECMAScript 7 a**bяк альтернативу Math.pow(a,b)( MDN Reference ) і натрапив на обговорення в цьому пості , в якому вони, мабуть, поводяться по-різному. Я перевірив це в 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`щоб зробити його читабельним, а також уникнути сміливої / курсивної проблеми