大きな整数の正確な計算機|BigIntで桁数無制限の加減乗除・べき乗
桁数の多い巨大な整数同士を誤差なく正確に計算する無料ツールです。JavaScriptのBigIntを使用し、9,007,199,254,740,991(2の53乗-1)を超える整数でも加算・減算・乗算・整数除算(商と余り)・べき乗を厳密に計算できます。
なぜ2の53乗を超えると誤差が生じるのか
通常の電卓やJavaScriptの数値型(Number)は、2の53乗(Number.MAX_SAFE_INTEGER)を超えると隣り合う整数の区別がつかなくなります。BigIntを使えばこの限界を超えて正確に計算できます。
| Number.MAX_SAFE_INTEGER | 9,007,199,254,740,991(253 − 1) |
|---|---|
| 9007199254740992 + 1 | Number: 9007199254740992(誤り) / BigInt: 9007199254740993(正確) |
Tips
- 通常の電卓や表計算ソフトの数値型は2の53乗(約900兆)を超えると誤差が生じますが、このツールはBigIntを使うため桁数無制限で正確に計算できます。
- 整数除算(÷)では商だけでなく余りも同時に表示されるため、暗号やハッシュ計算で使う剰余演算の検算にも便利です。
- べき乗の指数が大きすぎるとブラウザが応答しなくなる恐れがあるため、安全のため指数は100万までに制限しています。
- 入力欄にはカンマ区切り(例:
1,234,567)を含めても自動で除去してから計算するので、桁区切り付きの数値をそのまま貼り付けられます。 - 「サンプルを入力」ボタンを押すと、2の53乗を超える巨大な整数の計算例が自動入力され、通常の電卓との違いをすぐに確認できます。
よくある質問
余談ですが ― コンピューターは「大きな数」が苦手だった
コンピューターの数値表現には長らく制約がありました。多くのプログラミング言語が標準で使う64ビット浮動小数点数(倍精度)は、整数として安全に扱える範囲が2の53乗-1(9,007,199,254,740,991)までと決まっています。これは仮数部が53ビットしかないためで、それを超える整数は表現の際に丸め誤差が生じてしまいます。当サイトの「電卓(計算機)」ツールも例外ではなく、この精度限界を持っています。
この問題を解決するのが多倍長整数(Arbitrary-precision integer、通称bignum)という考え方です。JavaScriptでは2020年頃からBigIntという新しい型がすべての主要ブラウザで標準搭載され、メモリの許す限り桁数に上限なく整数を正確に扱えるようになりました。ただし内部的には多数の桁を配列的に管理するため、桁数が増えるほど計算に時間がかかるというトレードオフがあります。
暗号分野でもこの技術は不可欠です。例えばRSA暗号の鍵は2048ビット(10進で600桁超)の整数が使われることも珍しくなく、こうした巨大な数の掛け算・べき乗剰余演算を正確に行うために多倍長整数ライブラリが世界中の暗号ソフトウェアで使われています。
競技プログラミングの世界でも、大きな階乗(例: 100の階乗は158桁)やフィボナッチ数列の遠い項を求める問題は頻出です。通常の数値型では途中から誤差が混入してしまうため、多倍長整数の扱いに習熟しているかどうかが正解率を左右することも少なくありません。