From e9b9aedc52417bbb3581007e7157b185aad494ed Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Tue, 11 Jan 2022 02:29:37 +0900 Subject: 2021/07/21 時点の英語版に同期 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../number/max_safe_integer/index.md | 80 ++++++++++------------ 1 file changed, 35 insertions(+), 45 deletions(-) (limited to 'files/ja/web/javascript/reference/global_objects/number') 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 --- -
{{JSRef}}
+{{JSRef}} -

Number.MAX_SAFE_INTEGER 定数は、JavaScript における安全な整数の最大値 (253 - 1) を表します。

+**`Number.MAX_SAFE_INTEGER`** 定数は、JavaScript における安全な整数の最大値 (`2^53 - 1`) を表します。 -

もっと大きな整数には、 {{jsxref("BigInt")}} を使用することを検討してください。

+もっと大きな整数には、 {{jsxref("BigInt")}} を使用することを検討してください。 -
{{EmbedInteractiveExample("pages/js/number-maxsafeinteger.html")}}
+{{EmbedInteractiveExample("pages/js/number-maxsafeinteger.html")}} +{{js_property_attributes(0, 0, 0)}} - +## 解説 -
{{js_property_attributes(0, 0, 0)}}
+`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` との間の数を表すことができるからです。 -

解説

+この文脈で示している安全とは、整数を正確に表現し、正しく比較する能力を指します。たとえば、 `Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2` は、数学的には不正確ですが true と評価されます。詳細については {{jsxref("Number.isSafeInteger()")}} を見てください。 -

MAX_SAFE_INTEGER 定数は 9007199254740991 (9,007,199,254,740,991) である値です。その数である理由は JavaScript が IEEE 754 で指定されたとおり倍精度浮動小数点型数値を使用し安全に -(253 - 1)253 - 1 との間の数を表すことができるからです。

+このフィールドは古いブラウザーには存在しません。 `Math.max(Number.MAX_SAFE_INTEGER, 2)` のように存在を確認せずに使用すると、 NaN のような望ましくない結果が得られます。 -

この文脈で示している安全とは、整数を正確に表現し、正しく比較する能力を指します。たとえば、 Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 は、数学的には不正確ですが true と評価されます。詳細については {{jsxref("Number.isSafeInteger()")}} を見てください。

+`MAX_SAFE_INTEGER` は {{jsxref("Number")}} の静的なプロパティなので、自ら生成した {{jsxref("Number")}} オブジェクトのプロパティとしてではなく、常に `Number.MAX_SAFE_INTEGER` として使うようにしてください。 -

このフィールドは古いブラウザーには存在しません。 Math.max(Number.MAX_SAFE_INTEGER, 2) のように存在を確認せずに使用すると、 NaN のような望ましくない結果が得られます。

+## ポリフィル -

MAX_SAFE_INTEGER は {{jsxref("Number")}} の静的なプロパティなので、自ら生成した {{jsxref("Number")}} オブジェクトのプロパティとしてではなく、常に Number.MAX_SAFE_INTEGER として使うようにしてください。

- -

Polyfill

- -
if (!Number.MAX_SAFE_INTEGER) {
+```js
+if (!Number.MAX_SAFE_INTEGER) {
     Number.MAX_SAFE_INTEGER = 9007199254740991; // Math.pow(2, 53) - 1;
 }
-
+``` -

+## 例 -

MAX_SAFE_INTEGER の返値

+### MAX_SAFE_INTEGER の返値 -
Number.MAX_SAFE_INTEGER; // 9007199254740991
-
+```js +Number.MAX_SAFE_INTEGER; // 9007199254740991 +``` -

安全な整数よりも大きな数値

+### 安全な整数よりも大きな数値 -

浮動小数点の場合、ゼロのような正規の精度以下の場合を除いて、実際には10進数の末尾の "1" が値となるため、これは2を返します。

+浮動小数点の場合、ゼロのような正規の精度以下の場合を除いて、実際には10進数の末尾の "1" が値となるため、これは2を返します。 -
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
-
+```js +Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2 +``` -

仕様書

+## 仕様書 - - - - - - - - - - - -
仕様書
{{SpecName('ESDraft', '#sec-number.max_safe_integer', 'Number.MAX_SAFE_INTEGER')}}
+{{Specifications}} -

ブラウザーの互換性

+## ブラウザーの互換性 -

{{Compat("javascript.builtins.Number.MAX_SAFE_INTEGER")}}

+{{Compat}} -

関連情報

+## 関連情報 - +- `Number.MAX_SAFE_INTEGER` のポリフィルは [`core-js`](https://github.com/zloirock/core-js#ecmascript-number) で利用できます +- {{jsxref("Number.MIN_SAFE_INTEGER")}} +- {{jsxref("Number.isSafeInteger()")}} +- {{jsxref("BigInt")}} -- cgit v1.2.3-54-g00ecf