BigInt【任意精度整数】オブジェクト
メモ
概要
- 任意精度の整数を表すオブジェクト
- 整数のみを表現 (NaN・Undefined 等はなし)
- 最大値・最小値:仕様上は制限なし
Number【数値】の Number.MAX_SAFE_INTEGER【正確な最大整数値】 (9,007,199,254,740,991) よりも大きな整数値を表現可能 - 0n と -0n の区別なし
- +(プラス記号)付きの正数は例外 (演算等 参照)
- Number【数値】との演算は不可、比較は可 (Number型 を BigInt型 に変換後に演算)
- new での生成やサブクラス化には未対応
- 数値セパレータ使用可 (例:1_234_567n)
- BigInt型【任意精度整数型】も同等の処理が可能 (一時的に BigInt【任意精度整数】オブジェクト を作成)
変換
- 文字列・Number【数値】(整数値のみ) ⇒ BigInt
- BigInt ⇒ 文字列
- BigInt.toLocaleString【文字列変換 (ロケール)】:3桁区切り・通貨 等 (実装依存)
- BigInt.toString【文字列変換 (基数指定可)】:2 ~ 36進数
- String【文字列変換】:10進数
- BigInt ⇒ Number【数値】
関連
外部リンク
- ECMA-262 (英語)
Numeric Types ES2024 (15) ES2023 (14) ES2022 (13) The BigInt Type ES2024 (15) ES2023 (14) ES2022 (13) Numeric Literals ES2024 (15) ES2023 (14) ES2022 (13) BigInt Objects ES2024 (15) ES2023 (14) ES2022 (13) Properties of the BigInt Constructor ES2024 (15) ES2023 (14) ES2022 (13)
リテラル
数値の末尾にnを記述、プラス記号は不可
リテラル | 例 | 説明 |
---|---|---|
[-] Num~Numn | 9007199254740991n | 10進数 Num :0~9 |
[-]0b Bin~Binn[-]0B Bin~Binn | 0b1111n | 2進数 Bin :0・1 |
[-]0o Oct~Octn[-]0O Oct~Octn | 0o7777n | 8進数 Oct :0~7 |
[-]0x Hex~Hexn[-]0X Hex~Hexn | 0xffffn | 16進数 Hex :0~9・a~f・A~F |
※ 数値セパレータ
数値部分をアンダースコア (_) で区切ることが可能
数値部分をアンダースコア (_) で区切ることが可能
- 先頭 及び 末尾 は不可
- 先頭の 0 の直後は不可
- 連続使用は不可
コンストラクタ・型変換
メソッド | 説明 |
---|---|
new BigInt | new による生成・サブクラス化は不可 |
BigInt( value ) | BigInt型変換 :BigInt型整数 value:各種型 BigInt:そのまま Boolean:true は 1n、false は 0n Number:整数値は型変換、その他は RangeError 例外 String:整数値は型変換、その他は SyntaxError 例外 その他:TypeError 例外 |
プロパティ・定数
プロパティ・定数 | 説明 | |
---|---|---|
BigInt.prototype | [ @@toStringTag ] | タグ bigint[ Symbol.toStringTag ]:"BigInt" |
BigInt.prototype. | constructor | コンストラクタ定義 |
BigInt. | prototype | プロトタイプ |
(定数) | 未定義 |
演算等
x・y は BigInt 型
Number 型との演算は不可 (比較は可能):暗黙の変換は無いので明示的に変換
演算等 | 説明 |
---|---|
+x | プラス記号付き正数 (例:+0n・+123n・+big) TypeError 例外:BigInt から Number への変換不可 |
- x | 負数 |
~x | 1の補数 |
x ** y | べき乗 ( x y ) y が 0n より小さい場合、RangeError 例外 |
x * y | 乗算 |
x / y | 除算 y が 0n の場合、RangeError 例外 |
x % y | 剰余 |
x ++ ++ x x + y | 加算 |
x -- -- xx - y | 減算 |
x << y | 左ビットシフト |
x >> y | 符号あり右ビットシフト |
x >>> y | 符号なし右ビットシフト |
x < y x > y x <= y x >= y | 大小比較 |
x == y x != y x === y x !== y | 等値・同値 比較 (0n と -0n の区別なし) |
x & y | ビット毎の AND |
x ^ y | ビット毎の XOR |
x | y | ビット毎の OR |
String( x ) | 文字列変換 ( BigInt.toString呼び出し ) |
メソッド
メソッド | 説明 | |
---|---|---|
BigInt. | asIntN( bits, bigint ) | 符号付き整数に丸め (bigint 値を -2 bits - 1 ~ 2 bits - 1 - 1 の範囲に丸め) ( bits に 64 (8バイト) を指定すると、C言語の long int の範囲に丸まる ) :丸められたBigInt型整数 bits:ビット数 bigint:丸める整数値 |
BigInt. | asUintN( bits, bigint ) | 符号なし整数に丸め (bigint 値を 0 ~ 2 bits - 1 の範囲に丸め) ( bits に 64 (8バイト) を指定すると、C言語の unsigned long int の範囲に丸まる ) :丸められたBigInt型整数 bits:ビット数 bigint:丸める整数値 |
BigInt.prototype. | toLocaleString( [ reserved1 [ , reserved2 ] ]) toLocaleString( [ locales [ , options ] ]) | 文字列変換 (ロケール) 実装依存:3桁区切り・通貨 等 :ロケールに対応した文字列 reserved1:リザーブ reserved2:リザーブ locales:ロケール options:オプション |
BigInt.prototype. | toString( [ radix ] ) | 文字列変換 (基数指定可) :基数に対応した文字列 radix:基数 (省略:10 / 2 ~ 36) |
BigInt.prototype. | valueOf( ) | BigInt値 取得 :BigInt値 |