Щойно я виявив функцію 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`
щоб зробити його читабельним, а також уникнути сміливої / курсивної проблеми