JavaScript

BigInt オブジェクト

 編集:2022.08.12 by T.A.

BigInt はで、の bigint 値、すなわち number プリミティブで表すことができない数を、表現したり操作したりするために使用します。

解説

BigInt 値は、単に BigInt と呼ばれることもありますが、bigint です。整数リテラルの末尾に「n」を追加するか、BigInt() コンストラクターを呼び出し、整数値または文字列値を与えることで生成することができます (ただし new 演算子なしで)。

D=9007199254740991n;
D=BigInt(9007199254740991);       //=[bigint]:9007199254740991
D=BigInt("9007199254740991");     //=[bigint]:9007199254740991
D=BigInt("0x1fffffffffffff");     //=[bigint]:9007199254740991
D=BigInt("0o377777777777777777"); //=[bigint]:9007199254740991
D=BigInt("0b11111111111111111111111111111111111111111111111111111"); //=[bigint]:9007199254740991

BigInt はいくつかの点で Number と似ていますが、重要ないくつかの点が異なります。組み込みの Math オブジェクト内のメソッドでは利用できず、演算で Number の値と混ぜることができません。同じ型に統一する必要があります。ただし、BigInt を Number へ変換する際には精度が落ちることがあるので、相互に変化する場合には注意が必要です。

¶省く

コンストラクター
BigInt()
新しい BigInt 値を生成します。
静的メソッド
BigInt.asIntN()
BigInt 値を符号付き整数値に丸め、その値を返します。
BigInt.asUintN()
BigInt 値を符号なし整数値に丸め、その値を返します。
インスタンス メソッド
BigInt.toLocaleString()
その BigInt 値の言語に合わせた表現の文字列を返します。Object.prototype.toLocaleString() メソッドを上書きします。
BigInt.toString()
その BigInt 値を指定された基数で表現した文字列を返します。Object.prototype.toString() メソッドを上書きします。
BigInt.valueOf()
その BigInt 値を返します。Object.prototype.valueOf() メソッドを上書きします。

¶省く

素数の計算
// 渡された BigInt が素数であった場合は true を返します
function isPrime(p) {
  for (let i = 2n; i * i <= p; i++) {
    if (p % i === 0n) return false;
  }
  return true;
}

// 引数として BigInt 値を取り、nth 番目の素数を BigInt 値として返します。
function nthPrime(nth) {
  let maybePrime = 2n;
  let prime = 0n;
  while (nth >= 0n) {
    if (isPrime(maybePrime)) {
      nth--;
      prime = maybePrime;
    }
    maybePrime++;
  }
  return prime;
}

D=nthPrime(20n); //=73。[bigint]:73

テスト