Math.pow()()がJavaScriptの**と等しくないのはなぜですか?
(MDNリファレンス)のa**b代替としてECMAScript 7機能を発見しました。その投稿で、動作が明らかに異なるという議論に遭遇しました。Chrome 55でテストしましたが、結果が異なることが確認できました。Math.pow(a,b) Math.pow(99,99) 戻り値 3.697296376497263e+197 一方 99**99 戻り値 3.697296376497268e+197 したがって、差分Math.pow(99,99) - 99**99をログに記録すると、になり-5.311379928167671e+182ます。 これまでのところ、それは単なる別の実装であると言えるかもしれませんが、それを関数でラップすることは再び異なる動作をします: function diff(x) { return Math.pow(x,x) - x**x; } 呼び出しをdiff(99)返します0。 なぜそれが起こっているのですか? 以下のようxszabojは指摘し、これはこの問題に絞り込むことができます。 var x = 99; x**x - 99**99; // Returns -5.311379928167671e+182