diff options
Diffstat (limited to 'files/ja/web/javascript/reference/global_objects/bigint')
5 files changed, 615 insertions, 0 deletions
diff --git a/files/ja/web/javascript/reference/global_objects/bigint/asintn/index.html b/files/ja/web/javascript/reference/global_objects/bigint/asintn/index.html new file mode 100644 index 0000000000..ae4388bebc --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/bigint/asintn/index.html @@ -0,0 +1,80 @@ +--- +title: BigInt.asIntN() +slug: Web/JavaScript/Reference/Global_Objects/BigInt/asIntN +tags: + - BigInt + - JavaScript + - Method + - Reference + - asIntN + - メソッド +translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/asIntN +--- +<div>{{JSRef}}</div> + +<p><strong><code>BigInt.asIntN</code></strong> 静的メソッドは、 BigInt 値を -2<sup>width-1</sup> から 2<sup>width-1</sup>-1 までの間の符号付き整数に丸めるために使われます。</p> + +<div>{{EmbedInteractiveExample("pages/js/bigint-asintn.html", "taller")}}</div> + +<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="syntaxbox">BigInt.asIntN(<var>width</var>, <var>bigint</var>);</pre> + +<h3 id="Parameters" name="Parameters">引数</h3> + +<dl> + <dt><code><var>width</var></code></dt> + <dd>整数の大きさのために利用できるビットの数。</dd> + <dt><code><var>bigint</var></code></dt> + <dd>指定されたビットに収めるよう丸める整数値。</dd> +</dl> + +<h3 id="Return_value" name="Return_value">返値</h3> + +<p><code><var>bigint</var></code> を 2<sup><code><var>width</var></code></sup> で割った剰余の値の符号付き整数です。</p> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Staying_in_64-bit_ranges" name="Staying_in_64-bit_ranges">64ビットの範囲に収める</h3> + +<p><code>BigInt.asIntN()</code> メソッドは、64ビットの数値の範囲に収めるのに便利です。</p> + +<pre class="brush: js">const max = 2n ** (64n - 1n) - 1n; + +BigInt.asIntN(64, max); +// ↪ 9223372036854775807n + +BigInt.asIntN(64, max + 1n); +// ↪ -9223372036854775807n +// オーバーフローするので負数になる +</pre> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">仕様書</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-bigint.asintn', 'BigInt.asIntN()')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.BigInt.asIntN")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{JSxRef("BigInt")}}</li> + <li>{{JSxRef("BigInt.asUintN()")}}</li> +</ul> diff --git a/files/ja/web/javascript/reference/global_objects/bigint/asuintn/index.html b/files/ja/web/javascript/reference/global_objects/bigint/asuintn/index.html new file mode 100644 index 0000000000..29130ac731 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/bigint/asuintn/index.html @@ -0,0 +1,79 @@ +--- +title: BigInt.asUintN() +slug: Web/JavaScript/Reference/Global_Objects/BigInt/asUintN +tags: + - BigInt + - JavaScript + - Method + - Reference + - asUintN + - メソッド +translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/asUintN +--- +<div>{{JSRef}}</div> + +<p><strong><code>BigInt.asUintN</code></strong> 静的メソッドは、 BigInt 値を 0 から 2<sup>width</sup>-1 までの間の符号なし整数に丸めるために使われます。</p> + +<div>{{EmbedInteractiveExample("pages/js/bigint-asuintn.html", "taller")}}</div> + +<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="syntaxbox">BigInt.asUintN(<var>width</var>, <var>bigint</var>);</pre> + +<h3 id="Parameters" name="Parameters">引数</h3> + +<dl> + <dt><code><var>width</var></code></dt> + <dd>整数の大きさのために利用できるビットの数。</dd> + <dt><code><var>bigint</var></code></dt> + <dd>指定されたビットに収めるよう丸める整数値。</dd> +</dl> + +<h3 id="Return_value" name="Return_value">返値</h3> + +<p><code><var>bigint</var></code> を 2<sup><code><var>width</var></code></sup> で割った剰余の値の符号なし整数です。</p> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Staying_in_64-bit_ranges" name="Staying_in_64-bit_ranges">64ビットの範囲に収める</h3> + +<p><code>BigInt.asUintN()</code> メソッドは、64ビットの数値の範囲に収めるのに便利です。</p> + +<pre class="brush: js">const max = 2n ** 64n - 1n; + +BigInt.asUintN(64, max); +// ↪ 18446744073709551615n + +BigInt.asUintN(64, max + 1n); +// ↪ 0n +// オーバーフローするのでゼロになる</pre> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">仕様書</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-bigint.asuintn', 'BigInt.asUintN()')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.BigInt.asUintN")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{JSxRef("BigInt")}}</li> + <li>{{JSxRef("BigInt.asIntN()")}}</li> +</ul> diff --git a/files/ja/web/javascript/reference/global_objects/bigint/bigint/index.html b/files/ja/web/javascript/reference/global_objects/bigint/bigint/index.html new file mode 100644 index 0000000000..b6b37f3858 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/bigint/bigint/index.html @@ -0,0 +1,65 @@ +--- +title: BigInt() コンストラクター +slug: Web/JavaScript/Reference/Global_Objects/BigInt/BigInt +tags: + - BigInt + - Constructor + - JavaScript + - Reference + - コンストラクター +translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/BigInt +--- +<div>{{JSRef}}</div> + +<p><strong><code>BigInt()</code></strong> コンストラクターは、 {{jsxref("BigInt")}} オブジェクトを生成するために使用します。</p> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="syntaxbox">BigInt(<var>value</var>); +</pre> + +<h3 id="Parameters" name="Parameters">引数</h3> + +<dl> + <dt><code><var>value</var></code></dt> + <dd>作成しようとしているオブジェクトの数値。文字列または整数にすることができます。</dd> +</dl> + +<div class="blockIndicator note"> +<p><strong>メモ</strong>: <code>BigInt()</code> は {{JSxRef("Operators/new", "new")}} 演算子と共には使用されません。</p> +</div> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Creating_a_new_BigInt" name="Creating_a_new_BigInt">新しい BigInt の生成</h3> + +<pre class="brush: js">BigInt(123); +// 123n +</pre> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">仕様書</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-bigint-constructor', 'BigInt constructor')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.BigInt.BigInt")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("BigInt")}} class</li> +</ul> diff --git a/files/ja/web/javascript/reference/global_objects/bigint/index.html b/files/ja/web/javascript/reference/global_objects/bigint/index.html new file mode 100644 index 0000000000..5b45760615 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/bigint/index.html @@ -0,0 +1,296 @@ +--- +title: BigInt +slug: Web/JavaScript/Reference/Global_Objects/BigInt +tags: + - BigInt + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/BigInt +--- +<div>{{JSRef}}</div> + +<p><strong><code>BigInt</code></strong> は組み込みオブジェクトで、 {{JSxRef("Number")}} プリミティブで表現できる最大の数、 {{JSxRef("Number.MAX_SAFE_INTEGER")}} よりも大きな数値を信頼できるものとして表現する方法を提供します。 <strong><code>BigInt</code></strong> は任意に巨大な整数に使用することができます。</p> + +<h2 id="Syntax" name="Syntax">詳細</h2> + +<p><code>BigInt</code> は10進数の整数リテラルの末尾に <code>n</code> をつけて <code>10n</code> とするか、 <code>BigInt()</code> 関数を呼び出すことで作成することができます。</p> + +<pre class="brush: js notranslate">const theBiggestInt = 9007199254740991n; + +const alsoHuge = BigInt(9007199254740991); +// ↪ 9007199254740991n + +const hugeString = BigInt("9007199254740991"); +// ↪ 9007199254740991n + +const hugeHex = BigInt("0x1fffffffffffff"); +// ↪ 9007199254740991n + +const hugeBin = BigInt("0b11111111111111111111111111111111111111111111111111111"); +// ↪ 9007199254740991n +</pre> + +<p><code>BigInt</code> はいくつかの点で {{JSxRef("Number")}} と似ていますが、重要ないくつかの点が異なります。 — 組込みの {{JSxRef("Math")}} オブジェクト内のメソッドでは利用できず、演算で <code>Number</code> のインスタンスと混ぜることができません。同じ型に統一する必要があります。ただし、<code>BigInt</code> を <code>Number</code> へ変換する際には精度が落ちることがあるので、相互に変化する場合には注意が必要です。</p> + +<h3 id="Type_information" name="Type_information">型情報</h3> + +<p><code>typeof</code> の <code>BigInt</code> に対する評価値は、"bigint" となります。</p> + +<pre class="brush: js notranslate">typeof 1n === 'bigint'; // true +typeof BigInt('1') === 'bigint'; // true +</pre> + +<p><code>Object</code> でラップされている場合は、 <code>BigInt</code> は通常の "object" として扱われます。</p> + +<pre class="brush: js notranslate">typeof Object(1n) === 'object'; // true +</pre> + +<h3 id="Operators" name="Operators">演算子</h3> + +<p><code>BigInt</code> (または Object でラップした <code>BigInt</code>) を利用することができる演算子は、 <code>+</code>, <code>*</code>, <code>-</code>, <code>**</code>, <code>%</code> です。<a href="/ja/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators">ビット操作演算子</a>は、同様に利用できますが、 <code>>>></code> (論理的右シフト) は BigInt が常に符号付きなので除きます。同様に、単項演算子 (<code>+</code>) は <a href="https://github.com/tc39/proposal-bigint/blob/master/ADVANCED.md#dont-break-asmjs">asm.js を破らないように</a>対応していません。</p> + +<pre class="brush: js notranslate">const previousMaxSafe = BigInt(Number.MAX_SAFE_INTEGER); +// ↪ 9007199254740991 + +const maxPlusOne = previousMaxSafe + 1n; +// ↪ 9007199254740992n + +const theFuture = previousMaxSafe + 2n; +// ↪ 9007199254740993n, this works now! + +const multi = previousMaxSafe * 2n; +// ↪ 18014398509481982n + +const subtr = multi – 10n; +// ↪ 18014398509481972n + +const mod = multi % 10n; +// ↪ 2n + +const bigN = 2n ** 54n; +// ↪ 18014398509481984n + +bigN * -1n +// ↪ –18014398509481984n +</pre> + +<p><code>/</code> 演算子もすべての数値に対して、期待される通りに動作します。ただ <code>BigInt</code> は<code>BigDecimal</code> ではないため、演算結果は 0 の方向に丸められます。別の言い方をすれば、小数を返すことはありません。</p> + +<div class="blockIndicator warning"> +<p><code>BigInt</code> を使用した場合、結果が小数となるような演算は切り捨てられます。</p> +</div> + +<pre class="brush: js notranslate">const expected = 4n / 2n; +// ↪ 2n + +const rounded = 5n / 2n; +// ↪ 2n, not 2.5n + +</pre> + +<h3 id="Comparisons" name="Comparisons">比較演算</h3> + +<p><code>BigInt</code> は {{JSxRef("Number")}} と厳密等価ではありませんが、等価にはなります。</p> + +<pre class="brush: js notranslate">0n === 0 +// ↪ false + +0n == 0 +// ↪ true</pre> + +<p>{{JSxRef("Global_Objects/Number", "Number")}} と <code>BigInt</code> は通常通り比較できます。</p> + +<pre class="brush: js notranslate">1n < 2 +// ↪ true + +2n > 1 +// ↪ true + +2 > 2 +// ↪ false + +2n > 2 +// ↪ false + +2n >= 2 +// ↪ true</pre> + +<p>配列の要素に混在させることでき、並べ替えも可能です。</p> + +<pre class="brush: js notranslate">const mixed = [4n, 6, -12n, 10, 4, 0, 0n]; +// ↪ [4n, 6, -12n, 10, 4, 0, 0n] + +mixed.sort(); +// ↪ [-12n, 0, 0n, 4n, 4, 6, 10] + +mixed.sort((a, b) => a - b) +// won't work since subtraction will not work with mixed types +// TypeError: can't convert BigInt to number + +// sort with an appropriate numeric comparator +mixed.sort((a, b) => (a < b) ? -1 : ((a > b) ? 1 : 0) +// ↪ [ -12n, 0, 0n, 4n, 4, 6, 10 ]</pre> + +<p>なお、 <code>Object</code> にラップされた <code>BigInt</code> は他のオブジェクトと同様の振る舞いをします。同じインスタンス同士が比較された場合にのみ、等価となります:</p> + +<pre class="brush: js notranslate">0n === Object(0n); // false +Object(0n) === Object(0n); // false + +const o = Object(0n); +o === o // true +</pre> + +<h3 id="Conditionals" name="Conditionals">条件式</h3> + +<p><code>BigInt</code> が {{JSxRef("Global_Objects/Boolean", "Boolean")}} へ変換される次のような場合は、 {{JSxRef("Global_Objects/Number", "Number")}} と同様の変換が行われます。 </p> + +<ul> + <li>{{JSxRef("Global_Objects/Boolean", "Boolean")}} 関数を利用した場合</li> + <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators">論理演算子</a> <code>||</code>、`<code>&&</code>`、<code>!</code> で使用される場合</li> + <li> {{JSxRef("Statements/if...else", "if")}} 文などの条件式に使用される場合</li> +</ul> + +<pre class="brush: js notranslate">if (0n) { + console.log('Hello from the if!'); +} else { + console.log('Hello from the else!'); +} + +// ↪ "Hello from the else!" + +0n || 12n +// ↪ 12n + +0n && 12n +// ↪ 0n + +Boolean(0n) +// ↪ false + +Boolean(12n) +// ↪ true + +!12n +// ↪ false + +!0n +// ↪ true +</pre> + +<h2 id="Methods" name="Methods">コンストラクタ</h2> + +<dl> + <dt> + <p>{{JSxRef("BigInt()")}}</p> + </dt> + <dd> + <p><font face="Arial, x-locale-body, sans-serif"><span style="background-color: #ffffff;">新しい</span></font><code>bigint</code> 値を作ります。</p> + </dd> +</dl> + +<h2 id="Methods" name="Methods">静的メソッド</h2> + +<dl> + <dt>{{JSxRef("BigInt.asIntN()")}}</dt> + <dd>BigInt の値を -2<sup>width-1</sup> ~ 2<sup>width-1</sup>-1 の間に丸めます。</dd> + <dt>{{JSxRef("BigInt.asUintN()")}}</dt> + <dd>BigInt の値を 0 ~ 2<sup>width</sup>-1 の間に丸めます。</dd> +</dl> + +<h2 id="Properties" name="Properties">プロパティ</h2> + +<dl> + <dt>{{JSxRef("BigInt.prototype")}}</dt> + <dd><code>BigInt</code> オブジェクトへの属性追加が可能です。</dd> +</dl> + +<h2 id="BigInt_instances" name="BigInt_instances"><code>BigInt</code> インスタンス</h2> + +<p>全ての <code>BigInt</code> インスタンスは <code>BigInt.prototype</code> を継承します。このプロトタイプオブジェクトへの変更は、全ての <code>BigInt</code> インスタンスに影響します。</p> + +<h3 id="Methods_2" name="Methods_2">メソッド</h3> + +<p>{{page("/ja/docs/Web/JavaScript/Reference/Global_Objects/BigInt/prototype", "Methods")}}</p> + +<h2 id="Usage_recommendations" name="Usage_recommendations">使用方法の推奨事項</h2> + +<h3 id="Coercion" name="Coercion">型変換</h3> + +<p>{{JSxRef("Number")}} と <code>BigInt</code> との間の型変換は精度が落ちる可能性があるため、 <code>BigInt</code> は値が論理的に2<sup>53</sup>以上になる場合にのみ使用し、この2つの型の間で型変換を行わないこと推奨します。</p> + +<h3 id="Cryptography" name="Cryptography">暗号処理</h3> + +<p><code>BigInt</code> で対応している演算は、実行時間が一定ではありません。従って、 <code>BigInt</code> は<a href="https://www.chosenplaintext.ca/articles/beginners-guide-constant-time-cryptography.html">暗号処理での使用には向きません</a>。</p> + +<h3 id="Use_within_JSON" name="Use_within_JSON">JSON での使用</h3> + +<p><code>BigInt</code> の値は既定で JSON のシリアライズに対応していないため、{{JSxRef("JSON.stringify()")}} を <code>BigInt</code> 値に対して使用すると <code>TypeError</code> が発生します。ただし、必要であれば独自の <code>toJSON</code> メソッドを実装することができます。</p> + +<pre class="brush: js notranslate">BigInt.prototype.toJSON = function() { return this.toString(); }</pre> + +<p><code>JSON.stringify</code> により、例外が発生する代わりに次のように文字列を生成するようになります。</p> + +<pre class="brush: js notranslate">JSON.stringify(BigInt(1)); +// '"1"'</pre> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Calculating_Primes" name="Calculating_Primes">素数の計算</h3> + +<pre class="brush: js notranslate">function isPrime(p) { + for (let i = 2n; i * i <= p; i++) { + if (p % i === 0n) return false; + } + return true; +} + +// Takes a BigInt as an argument and returns a BigInt +function nthPrime(nth) { + let maybePrime = 2n; + let prime = 0n; + + while (nth >= 0n) { + if (isPrime(maybePrime)) { + nth -= 1n; + prime = maybePrime; + } + maybePrime += 1n; + } + + return prime; +} + +nthPrime(20n) +// ↪ 73n</pre> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">仕様書</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName("ESDraft", "#sec-bigint-objects", "<code>BigInt</code> objects")}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.BigInt")}}</p> + +<h3 id="Implementation_Progress">Implementation Progress</h3> + +<p>The following table provides a daily implementation status for this feature, because this feature has not yet reached cross-browser stability. The data is generated by running the relevant feature tests in <a href="https://github.com/tc39/test262">Test262</a>, the standard test suite of JavaScript, in the nightly build, or latest release of each browser's JavaScript engine.</p> + +<p>{{EmbedTest262ReportResultsTable("BigInt")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{JSxRef("Number")}}</li> +</ul> diff --git a/files/ja/web/javascript/reference/global_objects/bigint/tostring/index.html b/files/ja/web/javascript/reference/global_objects/bigint/tostring/index.html new file mode 100644 index 0000000000..06d956f1ed --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/bigint/tostring/index.html @@ -0,0 +1,95 @@ +--- +title: BigInt.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/BigInt/toString +tags: + - BigInt + - JavaScript + - Method + - Prototype + - toString() +translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/toString +--- +<div>{{JSRef}}</div> + +<p><strong><code>toString()</code></strong>メソッドは、指定した {{jsxref("BigInt")}} オブジェクトを表す文字列を返します。末尾の "n" は返り値の文字列の一部にはなりません。</p> + +<div>{{EmbedInteractiveExample("pages/js/bigint-tostring.html")}}</div> + +<p class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</p> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="syntaxbox notranslate"><code><var>bigIntObj</var>.toString([<var>radix</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">パラメーター</h3> + +<dl> + <dt><code>radix</code>{{optional_inline}}</dt> + <dd>オプション。数値を表す底に指定する 2 以上 36 以下の整数(基数)。</dd> +</dl> + +<h3 id="Return_value" name="Return_value">戻り値</h3> + +<p>指定した {{jsxref("BigInt")}} オブジェクトを表す文字列。</p> + +<h3 id="Exceptions" name="Exceptions">例外</h3> + +<dl> + <dt>{{jsxref("RangeError")}}</dt> + <dd><code>toString()</code> が 2 未満または 36 より大きな基数を与えられた場合、{{jsxref("RangeError")}} がスローされます。</dd> +</dl> + +<h2 id="Description" name="Description">説明</h2> + +<p>{{jsxref("BigInt")}} オブジェクトは {{jsxref("Object")}} の <code>toString()</code> メソッドをオーバーライドします。つまり、{{jsxref("Object.prototype.toString()")}} を継承しません。{{jsxref( "BigInt")}} オブジェクトでは、<code>toString()</code> メソッドは指定された基数によるオブジェクトの文字列表現を返します。</p> + +<p><code>toString()</code> メソッドは 1 番目の引数を解析し、指定された基数(底)による文字列表現を返そうとします。10 より大きな基数が指定された場合は、アルファベットが 9 より大きな数値を示します。例えば、16 進数(底が 16)では <code>a</code> から <code>f</code> が使用されます。</p> + +<p><code>radix</code> が指定されなかった場合は、基数として 10 が指定されたとみなします。</p> + +<p><code>bigIntObj</code> が負の数だった場合、符号は保持されます。これは、基数が 2 だった場合にも適用されます。つまり、返り値の文字列は、<code>bigIntObj</code> の正の 2 進数表現の先頭に <code>-</code> 符号が付いたものであり、<code>bigIntObj</code> の 2 の補数<strong>ではありません。</strong></p> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Using_toString" name="Using_toString"><code>toString</code>の使用</h3> + +<pre class="brush: js notranslate">17n.toString(); // '17' +66n.toString(2); // '1000010' +254n.toString(16); // 'fe' +-10n.toString(2); // -1010' +-0xffn.toString(2); // '-11111111' +</pre> + +<h3 id="Negative-zero_BigInt" name="Negative-zero_BigInt"><code>BigInt</code> における負の 0</h3> + +<p>整数に負の 0 が存在しないのと同様に、<code>BigInt</code> には負の 0 がありません。<code>-0.0</code> は JavaScript の {{jsxref("Number")}} 型にのみ現れる、IEEE 浮動小数点数の概念です。</p> + +<pre class="brush: js notranslate">(-0n).toString(); // '0' +BigInt(-0).toString(); // '0'</pre> + +<h2 id="Specifications" name="Specifications">仕様</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">仕様書</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-bigint.prototype.tostring', 'BigInt.prototype.toString()')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2> + +<p class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</p> + +<p>{{Compat("javascript.builtins.BigInt.toString")}}</p> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("BigInt.prototype.toLocaleString()")}}</li> + <li>{{jsxref("BigInt.prototype.valueOf()")}}</li> + <li>{{jsxref("Number.prototype.toString()")}}</li> +</ul> |