Ho appena scoperto la funzionalità ECMAScript 7 a**b
come alternativa a Math.pow(a,b)
( Riferimento MDN ) e mi sono imbattuto in una discussione in quel post , in cui apparentemente si comportano in modo diverso. L'ho testato in Chrome 55 e posso confermare che i risultati sono diversi.
Math.pow(99,99)
ritorna 3.697296376497263e+197
mentre
99**99
ritorna 3.697296376497268e+197
Quindi registrando la differenza si Math.pow(99,99) - 99**99
ottiene -5.311379928167671e+182
.
Finora si potrebbe dire che è semplicemente un'altra implementazione, ma avvolgerlo in una funzione si comporta di nuovo in modo diverso:
function diff(x) {
return Math.pow(x,x) - x**x;
}
la chiamata diff(99)
restituisce 0
.
Perché sta succedendo?
Come ha sottolineato xszaboj , questo può essere ridotto a questo problema:
var x = 99;
x**x - 99**99; // Returns -5.311379928167671e+182
`likethis`
per renderlo leggibile ed evitare anche il problema in grassetto / corsivo