【JS応用|初心者向け】JavaScriptの数値制限を突破!BigInt型で大きな数を正確に扱う方法

導入:なぜBigIntが必要なのか?

JavaScriptで数値を扱う際、通常は「Number型」を使用します。しかし、Number型には「扱える数値の大きさには限界がある」という弱点があります。具体的には、2の53乗マイナス1(9,007,199,254,740,991)を超える整数を計算しようとすると、値が丸められてしまい、正確な計算ができなくなります。
この「大きな数になると計算が狂う」という課題を解決するために登場したのが「BigInt」です。金融系アプリや、大規模な数値を扱うシステム開発では必須の知識となります。

基礎知識:Number型とBigInt型の違い

JavaScriptのNumber型は「浮動小数点数」という仕組みで管理されています。これは計算速度は速いのですが、非常に大きな整数や精密な精度を要する計算には向きません。
一方、BigIntは「任意の精度の整数」を扱うための型です。ただし、注意点として「小数点を含む計算はできない」「Number型と直接混ぜて計算できない」というルールがあります。

実装:BigIntの使い方

BigIntを作成するには、数値の末尾に「n」を付けるか、BigInt()関数を使用します。

サンプルプログラム

以下のコードをコピーして、ブラウザのコンソールやNode.js環境で実行してみてください。

// 1. BigIntの宣言方法
const bigInt1 = 123456789012345678901234567890n; // 数値の最後にnを付ける
const bigInt2 = BigInt("123456789012345678901234567890"); // 文字列から変換する

// 2. 大きな数の計算
const result = bigInt1 + 100n;
console.log("計算結果:", result.toString()); 

// 3. Number型との違い(限界を超えた場合)
const maxSafeNumber = Number.MAX_SAFE_INTEGER;
console.log("Numberの限界値:", maxSafeNumber);
console.log("限界値 + 1 (Number):", maxSafeNumber + 1); // 正確に表示できない
console.log("限界値 + 1 (BigInt):", BigInt(maxSafeNumber) + 1n); // 正確に表示できる

応用・注意点:現場で陥りやすい罠

BigIntを扱う際に、初心者が最も陥りやすいバグが「型混合エラー」です。
例えば、BigInt型とNumber型を足し算(10n + 10)しようとすると、TypeErrorが発生してプログラムが停止します。
必ず計算する前に、どちらかの型に揃える必要があります。

また、JSON.stringify()でBigIntを含むオブジェクトをシリアライズしようとするとエラーになります。API通信などでBigIntを送信する場合は、事前に.toString()メソッドを使って文字列に変換するのが現場での定石です。

BigIntは非常に強力ですが、全ての数値をBigIntにするのではなく、「限界を超える可能性がある大きな整数」に絞って使用するのが、パフォーマンスを維持するコツです。

タイトルとURLをコピーしました