diff options
author | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2021-09-15 22:56:40 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-15 22:56:40 +0900 |
commit | af49aea3d62765395371fca6aee7c4e1c09402b1 (patch) | |
tree | 8db8afd46cb591ba8e580ea5e2a5157e469e1584 /files/ja/web | |
parent | d3a323f4d82ee694c7ed326e1948f011f0aca844 (diff) | |
download | translated-content-af49aea3d62765395371fca6aee7c4e1c09402b1.tar.gz translated-content-af49aea3d62765395371fca6aee7c4e1c09402b1.tar.bz2 translated-content-af49aea3d62765395371fca6aee7c4e1c09402b1.zip |
Global_Objects/BigInt を更新 (#2387)
- 2021/07/21 時点の英語版に同期
- `toLocaleString()`, `valueOf()` については新規翻訳
Diffstat (limited to 'files/ja/web')
4 files changed, 451 insertions, 288 deletions
diff --git a/files/ja/web/javascript/reference/global_objects/bigint/index.html b/files/ja/web/javascript/reference/global_objects/bigint/index.html deleted file mode 100644 index c40ca5cf90..0000000000 --- a/files/ja/web/javascript/reference/global_objects/bigint/index.html +++ /dev/null @@ -1,288 +0,0 @@ ---- -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> - -<p>{{Compat("javascript.builtins.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/index.md b/files/ja/web/javascript/reference/global_objects/bigint/index.md new file mode 100644 index 0000000000..f42782a3ea --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/bigint/index.md @@ -0,0 +1,289 @@ +--- +title: BigInt +slug: Web/JavaScript/Reference/Global_Objects/BigInt +tags: + - BigInt + - クラス + - JavaScript + - リファレンス +browser-compat: javascript.builtins.BigInt +translation_of: Web/JavaScript/Reference/Global_Objects/BigInt +--- +{{JSRef}} + +**`BigInt`** は組み込みオブジェクトで、そのコンストラクターは `bigint` {{Glossary("Primitive", "プリミティブ")}} — または **BigInt 値** や単に **BigInt** と呼ばれることもありますが — を返します。これは 2^53 - 1 ([`Number.MAX_SAFE_INTEGER`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)、 `number` {{Glossary("Primitive", "プリミティブ")}} または *Number 値*で表すことができる最大の数) よりも大きな数を表すことができます。 BigInt 値は任意に巨大な整数に使用することができます。 + +## 解説 + +**BigInt 値**は、単に **BigInt** と呼ばれることもありますが、 `bigint` {{Glossary("Primitive", "プリミティブ")}}です。整数リテラルの末尾に `n` を追加するか、 {{jsxref("Global_Objects/BigInt/BigInt", "BigInt()")}} コンストラクターを呼び出し、整数値または文字列値を与えることで生成することができます (ただし `new` 演算子なしで)。 + +```js +const previouslyMaxSafeInteger = 9007199254740991n + +const alsoHuge = BigInt(9007199254740991) +// ↪ 9007199254740991n + +const hugeString = BigInt("9007199254740991") +// ↪ 9007199254740991n + +const hugeHex = BigInt("0x1fffffffffffff") +// ↪ 9007199254740991n + +const hugeOctal = BigInt("0o377777777777777777") +// ↪ 9007199254740991n + +const hugeBin = BigInt("0b11111111111111111111111111111111111111111111111111111") +// ↪ 9007199254740991n +``` + +BigInt はいくつかの点で Number と似ていますが、重要ないくつかの点が異なります。組み込みの [`Math`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Math) オブジェクト内のメソッドでは利用できず、演算で Number の値と混ぜることができません。同じ型に統一する必要があります。ただし、BigInt を Number へ変換する際には精度が落ちることがあるので、相互に変化する場合には注意が必要です。 + +### 型情報 + +`typeof` の `BigInt` 値 (`bigint` プリミティブ) に対する評価値は、"`bigint`" となります。 + +```js +typeof 1n === 'bigint' // true +typeof BigInt('1') === 'bigint' // true +``` + +BitInt の値は `Object` でラップすることができます。 + +```js +typeof Object(1n) === 'object' // true +``` + +### 演算子 + +以下の演算子は BigInt 値またはオブジェクトでラップした BigInt 値で使用することができます。 + + + * - % ** + +[ビット操作演算子](/ja/docs/Web/JavaScript/Reference/Operators)は、同様に利用できますが、 `>>>` (論理的右シフト) は BigInt が常に符号付きなので除外されます。 + +同様に、単項演算子 (`+`) は [asm.js を壊さないように](https://github.com/tc39/proposal-bigint/blob/master/ADVANCED.md#dont-break-asmjs)対応していません。 + +```js +const previousMaxSafe = BigInt(Number.MAX_SAFE_INTEGER) +// ↪ 9007199254740991n + +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 +``` + +`/` 演算子もすべての数値に対して、期待される通りに動作します。ただし、実数との演算では BigInt 値と演算すhる際に小数が切り捨てられます。実数を返すことはありません。 + +```js +const expected = 4n / 2n +// ↪ 2n + +const truncated = 5n / 2n +// ↪ 2n, not 2.5n +``` + +### 比較演算 + +BigInt 値は Number 値と厳密等価ではありませんが、等価にはなります。 + +```js +0n === 0 +// ↪ false + +0n == 0 +// ↪ true +``` + +Number と BigInt は通常通り比較できます。 + +```js +1n < 2 +// ↪ true + +2n > 1 +// ↪ true + +2 > 2 +// ↪ false + +2n > 2 +// ↪ false + +2n >= 2 +// ↪ true +``` + +BigInt 値と Number 値は配列の要素に混在させたり並べ替えたりすることも可能です。 + +```js +const mixed = [4n, 6, -12n, 10, 4, 0, 0n] +// ↪ [4n, 6, -12n, 10, 4, 0, 0n] + +mixed.sort() // 既定の並べ替えの動作 +// ↪ [ -12n, 0, 0n, 10, 4n, 4, 6 ] + +mixed.sort((a, b) => a - b) +// 型が混在した減算はできないので動作しない +// TypeError: can't convert BigInt value to Number value + +// 適切な数値比較関数を使用した並べ替え +mixed.sort((a, b) => (a < b) ? -1 : ((a > b) ? 1 : 0)) +// ↪ [ -12n, 0, 0n, 4n, 4, 6, 10 ] +``` + +なお、 `Object` にラップされた BigInt は他のオブジェクトと同様の振る舞いをします。同じインスタンス同士が比較された場合にのみ等価となります。 + +```js +0n === Object(0n) // false +Object(0n) === Object(0n) // false + +const o = Object(0n) +o === o // true +``` + +### 条件式 + +BigInt 値は次のような場合は Number 値のように動作します。 + +- [`Boolean`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Boolean) へ変換される場合 ( [`Boolean`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Boolean) 関数を使用して) +- [論理演算子](/ja/docs/Web/JavaScript/Reference/Operators)の `||`、`&&`、`!`、または [`if`](/ja/docs/Web/JavaScript/Reference/Statements/if...else) 文のような条件式の中で使用された場合 + +```js +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 +``` + +## コンストラクター + +- [`BigInt()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/BigInt/BigInt) + - : 新しい BigInt 値を生成します。 + +<h2 id="Methods" name="Methods">静的メソッド</h2> + +- [`BigInt.asIntN()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/BigInt/asIntN) + - : BigInt 値を符号付き整数値に丸め、その値を返します。 +- [`BigInt.asUintN()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/BigInt/asUintN) + - : BigInt 値を符号なし整数値に丸め、その値を返します。 + +## インスタンスメソッド + +- [`BigInt.prototype.toLocaleString()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/BigInt/toLocaleString) + - : この BigInt 値の言語に合わせた表現の文字列を返します。 [`Object.prototype.toLocaleString()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/toLocaleString) メソッドを上書きします。 +- [`BigInt.prototype.toString()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/BigInt/toString) + - : この BigInt 値を指定された基数で表現した文字列を返します。 [`Object.prototype.toString()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/toString) メソッドを上書きします。 +- [`BigInt.prototype.valueOf()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/BigInt/valueOf) + - : この BigInt 値を返します。 [`Object.prototype.valueOf()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf) メソッドを上書きします。 + +## 使用方法の推奨事項 + +## 型変換 + +Number 値と BigInt 値との間の型変換は精度が落ちる可能性があるため、次のことを推奨します。 + +- BigInt 値は、値が 2^53 を超えることが合理的に予想される場合にのみ使用する。 +- BigInt 値と Number 値の間で型変換を行わない。 + +<h3 id="Cryptography" name="Cryptography">暗号処理</h3> + +BigInt で対応している演算は、実行時間が一定ではないので、[タイミング攻撃](https://en.wikipedia.org/wiki/Timing_attack)を受ける可能性があります。したがって、 JavaScript の BigInt は暗号処理での使用には向きません。 + +### JSON での使用 + +[`JSON.stringify()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) を BigInt 値に対して使用すると `TypeError` が発生します。 BigInt 値は既定で JSON のシリアライズに対応していないため、ただし、必要であれば独自の `toJSON` メソッドを実装することができます。 + +```js +BigInt.prototype.toJSON = function() { return this.toString() } +``` + +`JSON.stringify` により、例外が発生する代わりに次のように文字列を生成するようになります。 + +```js +JSON.stringify(BigInt(1)) +// '"1"' +``` + +## 例 + +### 素数の計算 + +```js +// 渡された 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 +} + +nthPrime(20n) +// ↪ 73n +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [`Number`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Number) +- [`Number.MAX_SAFE_INTEGER`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER) diff --git a/files/ja/web/javascript/reference/global_objects/bigint/tolocalestring/index.md b/files/ja/web/javascript/reference/global_objects/bigint/tolocalestring/index.md new file mode 100644 index 0000000000..696c778e56 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/bigint/tolocalestring/index.md @@ -0,0 +1,114 @@ +--- +title: BigInt.prototype.toLocaleString() +slug: Web/JavaScript/Reference/Global_Objects/BigInt/toLocaleString +tags: + - BigInt + - 国際化 + - Intl + - JavaScript + - メソッド + - プロトタイプ +browser-compat: javascript.builtins.BigInt.toLocaleString +--- +{{JSRef}} + +**`toLocaleString()`** メソッドは、この BigInt 値の言語に合わせた表現の文字列を返します。 + +{{EmbedInteractiveExample("pages/js/bigint-tolocalestring.html")}} + +## 構文 + +```js +toLocaleString() +toLocaleString(locales) +toLocaleString(locales, options) +``` + +### 引数 + +`locales` および `options` の引数は、この関数の動作をカスタマイズするためのもので、アプリケーションは整形の慣例を使用する言語を指定することができます。 `locales` や `options` の引数を無視する実装では、使用するロケールや返す文字列の形式はすべて実装に依存します。 + +これらの引数や使用方法について、詳しくは [`Intl.NumberFormat()` +コンストラクター](/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat) を参照してください。 + +### 返値 + +指定された BigInt の言語に合わせた表現の文字列です。 + +## 性能 + +大量の数値を整形する場合は、 {{jsxref("Intl.NumberFormat")}} オブジェクトを生成して {{jsxref("Intl/NumberFormat/format", "NumberFormat.format")}} プロパティで提供される関数を使用したほうが有利です。 + +## 例 + +### `toLocaleString` の使用 + +ロケールを使用しない基本的な使用では、既定のロケールと既定のオプションで成形された文字列が返されます。 + +```js +var bigint = 3500n; + +bigint.toLocaleString(); +// "3,500" と表示 (U.S. English ロケールの場合) +``` + +### `locales` の使用 + +この例ではローカライズされた数値書式の変化形の一部を示しています。アプリケーションのユーザーインターフェイスで使用されている言語の書式を取得するには、必ず `locale` 引きお数でその言語を (場合によっては予備の言語も) 指定してください。 + +```js +var bigint = 123456789123456789n; + +// ドイツ語では千の位の区切りにピリオドを使用 +console.log(bigint.toLocaleString('de-DE')); +// → 123.456.789.123.456.789 + +// 多くのアラビア語を話す国ではアラビア語で東アラビア数字を使用 +console.log(bigint.toLocaleString('ar-EG')); +// → ١٢٣٬٤٥٦٬٧٨٩٬١٢٣٬٤٥٦٬٧٨٩ + +// インドでは千/十万/千万の区切りを使用 +console.log(bigint.toLocaleString('en-IN')); +// → 1,23,45,67,89,12,34,56,789 + +// nu 拡張キーは数値体系を要求。例えば中国語の数字の場合 +console.log(bigint.toLocaleString('zh-Hans-CN-u-nu-hanidec')); +// → 一二三,四五六,七八九,一二三,四五六,七八九 + +// 要求した言語に対応していない場合、例えばバリ語の場合、 +// 予備の言語、この場合はインドネシア語を使用 +console.log(bigint.toLocaleString(['ban', 'id'])); +// → 123.456.789.123.456.789 +``` + +### `options` の使用 + +`toLocaleString` で提供される結果は `options` 引数でカスタマイズできます。 + +```js +var bigint = 123456789123456789n; + +// 通貨書式を要求 +console.log(bigint.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' })); +// → 123.456.789.123.456.789,00 € + +// 日本円には下位の単位がない +console.log(bigint.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' })) +// → ¥123,456,789,123,456,789 + +// 有効数字を 3 桁に限定 +console.log(bigint.toLocaleString('en-IN', { maximumSignificantDigits: 3 })); +// → 1,23,00,00,00,00,00,00,000 +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{jsxref("BigInt.toString()")}} diff --git a/files/ja/web/javascript/reference/global_objects/bigint/valueof/index.md b/files/ja/web/javascript/reference/global_objects/bigint/valueof/index.md new file mode 100644 index 0000000000..c0f82adbb5 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/bigint/valueof/index.md @@ -0,0 +1,48 @@ +--- +title: BigInt.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/BigInt/valueOf +tags: + - BigInt + - JavaScript + - メソッド + - プロトタイプ + - valueOf() +browser-compat: javascript.builtins.BigInt.valueOf +translate_of: Web/JavaScript/Reference/Global_Objects/BigInt/valueOf +--- +{{JSRef}} + +**`valueOf()`** メソッドは、 {{jsxref("BigInt")}} オブジェクトにラップされたプリミティブ値を返します。 + +{{EmbedInteractiveExample("pages/js/bigint-valueof.html","shorter")}} + +## 構文 + +```js +bigIntObj.valueOf() +``` + +### 返値 + +指定された {{jsxref("BigInt")}} オブジェクトのプリミティブ値を表す BigInt です。 + +## 例 + +### `valueOf` の使用 + +```js +typeof Object(1n); // object +typeof Object(1n).valueOf(); // bigint +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{jsxref("BigInt.prototype.toString()")}} |