diff options
author | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2022-01-11 02:29:37 +0900 |
---|---|---|
committer | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2022-01-17 23:52:45 +0900 |
commit | e9b9aedc52417bbb3581007e7157b185aad494ed (patch) | |
tree | 082aa39de9ca612332bed1a0fca8b03396f98df8 /files/ja/web/javascript | |
parent | c966484b195d1ce2b72f8911d804ffba1897c06d (diff) | |
download | translated-content-e9b9aedc52417bbb3581007e7157b185aad494ed.tar.gz translated-content-e9b9aedc52417bbb3581007e7157b185aad494ed.tar.bz2 translated-content-e9b9aedc52417bbb3581007e7157b185aad494ed.zip |
2021/07/21 時点の英語版に同期
Diffstat (limited to 'files/ja/web/javascript')
-rw-r--r-- | files/ja/web/javascript/reference/global_objects/number/max_safe_integer/index.md | 80 |
1 files changed, 35 insertions, 45 deletions
diff --git a/files/ja/web/javascript/reference/global_objects/number/max_safe_integer/index.md b/files/ja/web/javascript/reference/global_objects/number/max_safe_integer/index.md index b4aa2f9c3c..eb94ad8c3c 100644 --- a/files/ja/web/javascript/reference/global_objects/number/max_safe_integer/index.md +++ b/files/ja/web/javascript/reference/global_objects/number/max_safe_integer/index.md @@ -6,74 +6,64 @@ tags: - JavaScript - Number - プロパティ + - ポリフィル +browser-compat: javascript.builtins.Number.MAX_SAFE_INTEGER translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER --- -<div>{{JSRef}}</div> +{{JSRef}} -<p><strong><code>Number.MAX_SAFE_INTEGER</code></strong> 定数は、JavaScript における安全な整数の最大値 (<code>2<sup>53</sup> - 1</code>) を表します。</p> +**`Number.MAX_SAFE_INTEGER`** 定数は、JavaScript における安全な整数の最大値 (`2^53 - 1`) を表します。 -<p>もっと大きな整数には、 {{jsxref("BigInt")}} を使用することを検討してください。</p> +もっと大きな整数には、 {{jsxref("BigInt")}} を使用することを検討してください。 -<div>{{EmbedInteractiveExample("pages/js/number-maxsafeinteger.html")}}</div> +{{EmbedInteractiveExample("pages/js/number-maxsafeinteger.html")}} +{{js_property_attributes(0, 0, 0)}} -<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div> +## 解説 -<div>{{js_property_attributes(0, 0, 0)}}</div> +`MAX_SAFE_INTEGER` 定数は `9007199254740991` (9,007,199,254,740,991) である値です。その数である理由は JavaScript が [IEEE 754](https://ja.wikipedia.org/wiki/IEEE_754) で指定されたとおり[倍精度浮動小数点型数値](https://ja.wikipedia.org/wiki/%E5%80%8D%E7%B2%BE%E5%BA%A6%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0)を使用し安全に `-(2^53 - 1)` と `2^53 - 1` との間の数を表すことができるからです。 -<h2 id="Description" name="Description">解説</h2> +この文脈で示している安全とは、整数を正確に表現し、正しく比較する能力を指します。たとえば、 `Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2` は、数学的には不正確ですが true と評価されます。詳細については {{jsxref("Number.isSafeInteger()")}} を見てください。 -<p><code>MAX_SAFE_INTEGER</code> 定数は <code>9007199254740991</code> (9,007,199,254,740,991) である値です。その数である理由は JavaScript が <a href="https://ja.wikipedia.org/wiki/IEEE_754">IEEE 754</a> で指定されたとおり<a href="https://ja.wikipedia.org/wiki/%E5%80%8D%E7%B2%BE%E5%BA%A6%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0">倍精度浮動小数点型数値</a>を使用し安全に <code>-(2<sup>53</sup> - 1)</code> と <code>2<sup>53</sup> - 1</code> との間の数を表すことができるからです。</p> +このフィールドは古いブラウザーには存在しません。 `Math.max(Number.MAX_SAFE_INTEGER, 2)` のように存在を確認せずに使用すると、 NaN のような望ましくない結果が得られます。 -<p>この文脈で示している安全とは、整数を正確に表現し、正しく比較する能力を指します。たとえば、 <code>Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2</code> は、数学的には不正確ですが true と評価されます。詳細については {{jsxref("Number.isSafeInteger()")}} を見てください。</p> +`MAX_SAFE_INTEGER` は {{jsxref("Number")}} の静的なプロパティなので、自ら生成した {{jsxref("Number")}} オブジェクトのプロパティとしてではなく、常に `Number.MAX_SAFE_INTEGER` として使うようにしてください。 -<p>このフィールドは古いブラウザーには存在しません。 <code>Math.max(Number.MAX_SAFE_INTEGER, 2)</code> のように存在を確認せずに使用すると、 NaN のような望ましくない結果が得られます。</p> +## ポリフィル -<p><code>MAX_SAFE_INTEGER</code> は {{jsxref("Number")}} の静的なプロパティなので、自ら生成した {{jsxref("Number")}} オブジェクトのプロパティとしてではなく、常に <code>Number.MAX_SAFE_INTEGER</code> として使うようにしてください。</p> - -<h2 id="Polyfill">Polyfill</h2> - -<pre class="brush: js notranslate">if (!Number.MAX_SAFE_INTEGER) { +```js +if (!Number.MAX_SAFE_INTEGER) { Number.MAX_SAFE_INTEGER = 9007199254740991; // Math.pow(2, 53) - 1; } -</pre> +``` -<h2 id="Examples" name="Examples">例</h2> +## 例 -<h3 id="Return_value_of_MAX_SAFE_INTEGER" name="Return_value_of_MAX_SAFE_INTEGER">MAX_SAFE_INTEGER の返値</h3> +### MAX_SAFE_INTEGER の返値 -<pre class="brush: js notranslate">Number.MAX_SAFE_INTEGER; // 9007199254740991 -</pre> +```js +Number.MAX_SAFE_INTEGER; // 9007199254740991 +``` -<h3 id="Numbers_higher_than_safe_integer" name="Numbers_higher_than_safe_integer">安全な整数よりも大きな数値</h3> +### 安全な整数よりも大きな数値 -<p>浮動小数点の場合、ゼロのような正規の精度以下の場合を除いて、実際には10進数の末尾の "1" が値となるため、これは2を返します。</p> +浮動小数点の場合、ゼロのような正規の精度以下の場合を除いて、実際には10進数の末尾の "1" が値となるため、これは2を返します。 -<pre class="brush: js notranslate">Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2 -</pre> +```js +Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2 +``` -<h2 id="Specifications" name="Specifications">仕様書</h2> +## 仕様書 -<table class="standard-table"> - <thead> - <tr> - <th scope="col">仕様書</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-number.max_safe_integer', 'Number.MAX_SAFE_INTEGER')}}</td> - </tr> - </tbody> -</table> +{{Specifications}} -<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> +## ブラウザーの互換性 -<p>{{Compat("javascript.builtins.Number.MAX_SAFE_INTEGER")}}</p> +{{Compat}} -<h2 id="See_also" name="See_also">関連情報</h2> +## 関連情報 -<ul> - <li>{{jsxref("Number.MIN_SAFE_INTEGER")}}</li> - <li>{{jsxref("Number.isSafeInteger()")}}</li> - <li>{{jsxref("BigInt")}}</li> -</ul> +- `Number.MAX_SAFE_INTEGER` のポリフィルは [`core-js`](https://github.com/zloirock/core-js#ecmascript-number) で利用できます +- {{jsxref("Number.MIN_SAFE_INTEGER")}} +- {{jsxref("Number.isSafeInteger()")}} +- {{jsxref("BigInt")}} |