Właśnie odkryłem funkcję ECMAScript 7 a**b
jako alternatywę dla Math.pow(a,b)
( Dokumentacja MDN ) i natknąłem się na dyskusję w tym poście , w której najwyraźniej zachowują się inaczej. Przetestowałem to w Chrome 55 i mogę potwierdzić, że wyniki się różnią.
Math.pow(99,99)
zwroty 3.697296376497263e+197
natomiast
99**99
zwroty 3.697296376497268e+197
Tak więc rejestrowanie różnicy Math.pow(99,99) - 99**99
skutkuje -5.311379928167671e+182
.
Do tej pory można by powiedzieć, że to po prostu kolejna implementacja, ale opakowanie jej w funkcję zachowuje się znowu inaczej:
function diff(x) {
return Math.pow(x,x) - x**x;
}
wywołanie diff(99)
zwrotów 0
.
Dlaczego tak się dzieje?
Jak zauważył xszaboj , można to zawęzić do tego problemu:
var x = 99;
x**x - 99**99; // Returns -5.311379928167671e+182
`likethis`
aby czytelny, a także uniknąć pogrubienie / kursywa problemu