Je viens de découvrir la fonctionnalité ECMAScript 7 a**b
comme alternative à Math.pow(a,b)
( MDN Reference ) et suis tombé sur une discussion dans ce post , dans laquelle ils se comportent apparemment différemment. Je l'ai testé dans Chrome 55 et je peux confirmer que les résultats diffèrent.
Math.pow(99,99)
Retour 3.697296376497263e+197
tandis que
99**99
Retour 3.697296376497268e+197
Donc, consigner la différence se Math.pow(99,99) - 99**99
traduit par -5.311379928167671e+182
.
Jusqu'à présent, on pourrait dire que c'est simplement une autre implémentation, mais l'envelopper dans une fonction se comporte à nouveau différemment:
function diff(x) {
return Math.pow(x,x) - x**x;
}
l'appel diff(99)
revient 0
.
Pourquoi cela se produit-il?
Comme l'a souligné xszaboj , cela peut être réduit à ce problème:
var x = 99;
x**x - 99**99; // Returns -5.311379928167671e+182
`likethis`
pour le rendre lisible et éviter le problème gras / italique