Ich habe gerade die ECMAScript 7-Funktion a**b
als Alternative für Math.pow(a,b)
( MDN-Referenz ) entdeckt und bin in diesem Beitrag auf eine Diskussion gestoßen , in der sie sich anscheinend anders verhalten. Ich habe es in Chrome 55 getestet und kann bestätigen, dass die Ergebnisse unterschiedlich sind.
Math.pow(99,99)
kehrt zurück 3.697296376497263e+197
wohingegen
99**99
kehrt zurück 3.697296376497268e+197
Protokollieren Sie also den Unterschied Math.pow(99,99) - 99**99
führt also zu -5.311379928167671e+182
.
Bisher könnte man sagen, dass es einfach eine andere Implementierung ist, aber das Einschließen in eine Funktion verhält sich wieder anders:
function diff(x) {
return Math.pow(x,x) - x**x;
}
Berufung diff(99)
zurückkehrt 0
.
Warum passiert das?
Wie xszaboj betonte, kann dies auf dieses Problem eingegrenzt werden:
var x = 99;
x**x - 99**99; // Returns -5.311379928167671e+182
`likethis`
, um es lesbar zu machen und auch das Fett / Kursiv-Problem zu vermeiden