LoginSignup
12
4

More than 5 years have passed since last update.

JavaScriptで扱える整数の最大値は?

Posted at

オーバーフローとラップアラウンド

Go言語を勉強しているのですが、Go言語にはオーバーフローが起きた時に、その演算結果をラップアラウンドさせるという仕様があります。

b := byte(255)
b = b + 1 // b ==0

javascriptはどうなっているのか

そこで、javascriptはどうなっているのか気になりました。

一応、言語仕様的には安全に計算できる範囲は9007199254740991のようです。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER

では、64bitの最大値18446744073709551615を扱うとどうなるのか??
以下はchromeのconsoleで試した結果です。
勘違いして18446744073709551616で計算してしまっていますが、結果は変わらなかったのでスルーしてください:poop:

スクリーンショット 2018-07-04 7.28.16.png

スクリーンショット 2018-07-04 9.04.48.png

上記を見る限り、ラップアラウンドはされてないっぽい。


ここまでやって気づいたのですが、JSは符号ありだから最大値は9223372036854775807かも??
以下、結果です。

スクリーンショット 2018-07-04 9.12.42.png

全然関係なく、計算できなかった・・・:raised_hand:

最初に書いた通り、MAXは9007199254740991と思った方が良さそう・・・??:ear:

12
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
4