--- title: Number slug: Web/JavaScript/Reference/Global_Objects/Number tags: - クラス - JavaScript - Number - リファレンス - ポリフィル browser-compat: javascript.builtins.Number translation_of: Web/JavaScript/Reference/Global_Objects/Number --- {{JSRef}}**`Number`** は[プリミティブラッパーオブジェクト](/ja/docs/Glossary/Primitive#primitive_wrapper_objects_in_javascript)で、 `37` や `-9.25` のような数値を表現したり操作したりするために使用されます。 **`Number`** コンストラクターは、数値を扱うための定数とメソッドを含んでいます。他の型の値は **`Number()` 関数**を用いて数値に変換することができます。 JavaScript の **Number** 型は [IEEE 754 の倍精度 64ビットバイナリー形式](https://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0)であり、 Java や C# の `double` のようなものです。これは小数点以下の数値を表すことができることを意味しますが、格納できる値にはいくつかの制限があります。 Number は小数点以下約 17 桁の精度しか保持できません。演算は[丸め誤差](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Representable_numbers,_conversion_and_rounding)の影響を受けます。 Number が保持できる最大の値は約 1.8E308 です。それ以上の数値は、特殊な `Number` の定数 {{jsxref("Infinity")}} に置き換えられます。 JavaScript コードにおける `37` のような数値リテラルは浮動小数点値であり、整数ではありません。日常的に使用される独立した整数型はありません。 (JavaScript は {{jsxref("BigInt")}} 型を持つようになりましたが、日常の利用で Number を置き換えるように設計されてはいません。 `37` は Number であり、 BigInt ではありません。) `Number` は `0b101`, `0o13`, `0x0A` のようなリテラル形式で表現することもできます。数値の[字句文法はこちら](/ja/docs/Web/JavaScript/Reference/Lexical_grammar#numeric_literals)を参照してください。 ## 解説 関数として使用された場合、 `Number(value)` は文字列やその他の値を Number 型に変換します。値が変換できない場合は、 {{jsxref("NaN")}} を返します。 ### リテラル構文 ```js 123 // 百二十三 123.0 // 同じ 123 === 123.0 // true ``` ### 関数構文 ```js Number('123') // 数値 123 を返す Number('123') === 123 // true Number("unicorn") // NaN Number(undefined) // NaN ``` ## コンストラクター - [`Number()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Number/Number) - : 新しい `Number` 値を生成します。 ## 静的プロパティ - {{jsxref("Number.EPSILON")}} - : 数値として表される 2 個の数の最小の差です。 - {{jsxref("Number.MAX_SAFE_INTEGER")}} - : JavaScript における確実な整数の最大値 (`2^53 - 1`) です。 - {{jsxref("Number.MAX_VALUE")}} - : 表現可能な正の数の最大値です。 - {{jsxref("Number.MIN_SAFE_INTEGER")}} - : JavaScript における確実な整数の最小値 (`-(2^53 - 1)`) です。 - {{jsxref("Number.MIN_VALUE")}} - : 表現可能な正の数の最小値。0 に最も近い正の数です (0 ではありません)。 - {{jsxref("Number.NaN")}} - : 特殊な "**N**ot **a** **N**umber" (数値ではない) の値です。 - {{jsxref("Number.NEGATIVE_INFINITY")}} - : 負の無限大を表す特別な値です。オーバーフロー時に返されます。 - {{jsxref("Number.POSITIVE_INFINITY")}} - : 無限大を表す特別な値です。オーバーフロー時に返されます。 - {{jsxref("Number", "Number.prototype")}} - : `Number` オブジェクトへプロパティの追加ができるようにします。 ## 静的メソッド - {{jsxref("Number.isNaN()")}} - : 渡された値が `NaN` であるかどうかを判断します。 - {{jsxref("Number.isFinite()")}} - : 渡された値が有限数であるかどうかを判断します。 - {{jsxref("Number.isInteger()")}} - : 渡された値が整数であるかどうかを判断します。 - {{jsxref("Number.isSafeInteger()")}} - : 渡された値が確実な範囲の整数 (`-(2^53 - 1)` から `2^53 - 1` の間) であるかどうかを判断します。 - {{jsxref("Number.parseFloat()", "Number.parseFloat(string)")}} - : これはグローバルの {{jsxref("parseFloat", "parseFloat()")}} 関数と同じです。 - {{jsxref("Number.parseInt()", "Number.parseInt(string, [radix])")}} - : これはグローバルの {{jsxref("parseInt", "parseInt()")}} 関数と同じです。 ## インスタンスメソッド - {{jsxref("Number.prototype.toExponential()" ,"Number.prototype.toExponential(fractionDigits)")}} - : 指数表記で数値を表す文字列を返します。 - {{jsxref("Number.prototype.toFixed()", "Number.prototype.toFixed(digits)")}} - : 固定小数点表記で数値を表す文字列を返します。 - {{jsxref("Number.prototype.toLocaleString()", "Number.prototype.toLocaleString([locales [, options]])")}} - : この値を言語依存の表現で表す文字列を返します。 {{jsxref("Object.prototype.toLocaleString()")}} メソッドを上書きします。 - {{jsxref("Number.prototype.toPrecision()", "Number.prototype.toPrecision(precision)")}} - : 指定された精度で、固定小数点表記または指数表記で数値で表す文字列を返します。 - {{jsxref("Number.prototype.toString()", "Number.prototype.toString([radix])")}} - : 指定された基数を元に、指定されたオブジェクトを表す文字列を返します。 {{jsxref("Object.prototype.toString()")}} メソッドを上書きします。 - {{jsxref("Number.prototype.valueOf()")}} - : 指定されたオブジェクトのプリミティブ値を返します。 {{jsxref("Object.prototype.valueOf()")}} メソッドを上書きします。 ## 例 ### Number オブジェクトを使用して変数に値を代入する 以下の例では、`Number` オブジェクトのプロパティを使用して、いくつかの数の変数に値を代入します。 ```js const biggestNum = Number.MAX_VALUE const smallestNum = Number.MIN_VALUE const infiniteNum = Number.POSITIVE_INFINITY const negInfiniteNum = Number.NEGATIVE_INFINITY const notANum = Number.NaN ``` ### Number の整数の範囲 次の例は、`Number` オブジェクトで表現可能な最小の整数値と最大の整数値です (詳細は、ECMAScript 標準の [6.1.6 The Number Type](https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type) の節を参照してください)。 ```js const biggestInt = Number.MAX_SAFE_INTEGER // (2**53 - 1) => 9007199254740991 const smallestInt = Number.MIN_SAFE_INTEGER // -(2**53 - 1) => -9007199254740991 ``` JSON にシリアライズされたデータを解析する場合、整数値がこの範囲を超えていると、 JSON パーサーがこの値を `Number` 型に変換したときに信頼できない値になります。 可能な回避策として、代わりに {{jsxref("String")}} を使用してください。 大きい数値は {{jsxref("BigInt")}} 型を用いて表すことができます。 ### Number を使用して Date オブジェクトを変換する 以下の例は、 `Number` を関数として用いて、{{jsxref("Date")}} オブジェクトを数値に変換します。 ```js let d = new Date('December 17, 1995 03:24:00') console.log(Number(d)) ``` これは、コンソールに "819199440000" を出力します。 ### 数字や null を数値に変換する ```js Number('123') // 123 Number('123') === 123 // true Number('12.3') // 12.3 Number('12.00') // 12 Number('123e-1') // 12.3 Number('') // 0 Number(null) // 0 Number('0x11') // 17 Number('0b11') // 3 Number('0o11') // 9 Number('foo') // NaN Number('100a') // NaN Number('-Infinity') // -Infinity ``` ## 仕様書 {{Specifications}} ## ブラウザーの互換性 {{Compat}} ## 関連情報 - 最新の `Number` の動作(2 進数と 8 進数のリテラルに対応)のポリフィルは [`core-js`](https://github.com/zloirock/core-js#ecmascript-number) にあります - {{jsxref("NaN")}} - [算術演算子](/ja/docs/Web/JavaScript/Reference/Operators#arithmetic_operators) - {{jsxref("Math")}} グローバルオブジェクト - 任意の精度の整数型: {{jsxref("BigInt")}}