Właśnie odkryłem funkcję ECMAScript 7 a**bjako 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**99skutkuje -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