Saya baru saja menemukan fitur ECMAScript 7 a**b
sebagai alternatif untuk Math.pow(a,b)
( Referensi MDN ) dan menemukan diskusi di posting itu , di mana mereka tampaknya berperilaku berbeda. Saya telah mengujinya di Chrome 55 dan dapat mengonfirmasi bahwa hasilnya berbeda.
Math.pow(99,99)
kembali 3.697296376497263e+197
sedangkan
99**99
kembali 3.697296376497268e+197
Jadi mencatat Math.pow(99,99) - 99**99
hasil perbedaan -5.311379928167671e+182
.
Sejauh ini dapat dikatakan, bahwa ini hanyalah implementasi lain, tetapi membungkusnya dalam sebuah fungsi berperilaku berbeda lagi:
function diff(x) {
return Math.pow(x,x) - x**x;
}
menelepon diff(99)
kembali 0
.
Mengapa itu terjadi?
Seperti yang ditunjukkan xszaboj , ini dapat dipersempit menjadi masalah ini:
var x = 99;
x**x - 99**99; // Returns -5.311379928167671e+182
`likethis`
agar dapat dibaca dan juga menghindari masalah huruf tebal / miring