Number

Numberプリミティブラッパーオブジェクトで、 37-9.25 のような数値を表現したり操作したりするために使用されます。

Number コンストラクターは、数値を扱うための定数とメソッドを含んでいます。他の型の値は Number() 関数を用いて数値に変換することができます。

JavaScript の Number 型は IEEE 754 の倍精度 64ビットバイナリ形式であり、 Java や C# の double のようなものです。これは小数点以下の数値を表すことができることを意味しますが、格納できる値にはいくつかの制限があります。 Number は小数点以下約17桁の精度しか保持できません。演算は丸め誤差の影響を受けます。 Number が保持できる最大の値は約1.8×10308です。それ以上の数値は、特殊な数値定数 Infinity に置き換えられます。

JavaScript コードにおける 37 のような数値リテラルは浮動小数点値であり、整数ではありません。日常的に使用される独立した整数型はありません。 (JavaScript は BigInt 型を持つようになりましたが、日常の利用で Number を置き換えるように設計されてはいません。 37 は Number であり、 BigInt ではありません。)

解説

関数として使用された場合、 Number(value) は文字列やその他の値を Number 型に変換します。値が変換できない場合は、 NaN を返します。

リテラル構文

123    // 百二十三
123.0  // 同じ
123 === 123.0  // true

関数構文

Number('123')  // 数値 123 を返す
Number('123') === 123  // true

Number("unicorn")  // NaN
Number(undefined)  // NaN

コンストラクター

Number()
新しい Number 値を生成します。

静的プロパティ

Number.EPSILON
数値として表される 2 個の数の最小の差です。
Number.MAX_SAFE_INTEGER
JavaScript における確実な整数の最大値 (253 - 1) です。
Number.MAX_VALUE
表現可能な正の数の最大値です。
Number.MIN_SAFE_INTEGER
JavaScript における確実な整数の最小値 (-(253 - 1)) です。
Number.MIN_VALUE
表現可能な正の数の最小値。0 に最も近い正の数です (0 ではありません)。
Number.NaN
特殊な "Not a Number" (数値ではない) の値です。
Number.NEGATIVE_INFINITY
負の無限大を表す特別な値です。オーバーフロー時に返されます。
Number.POSITIVE_INFINITY
無限大を表す特別な値です。オーバーフロー時に返されます。
Number.prototype
Number オブジェクトへのプロパティの追加を許可します。

静的メソッド

Number.isNaN()
渡された値が NaN であれば true を返します。
Number.isFinite()
渡された値が有限数であるかどうかを判断します。
Number.isInteger()
渡された値が整数であるかどうかを判断します。
Number.isSafeInteger()
渡された値が確実な範囲の整数 (-(253 - 1) から 253 - 1 の間) であれば true を返します。
Number.parseFloat(string)
値はグローバルオブジェクトの parseFloat() と同じです。
Number.parseInt(string, [radix])
値はグローバルオブジェクトの parseInt() と同じです。

インスタンスメソッド

Number.prototype.toExponential(fractionDigits)
指数表記で数値を表す文字列を返します。
Number.prototype.toFixed(digits)
固定小数点表記で数値を表す文字列を返します。
Number.prototype.toLocaleString([locales [, options]])
この値を言語依存の表現で表した文字列を返します。 Object.prototype.toLocaleString() メソッドを上書きします。
Number.prototype.toPrecision(precision)
指定された精度で、固定小数点表記または指数表記で数値で表す文字列を返します。
Number.prototype.toString([radix])
指定された基数を元に、指定されたオブジェクトを表す文字列を返します。 Object.prototype.toString() メソッドを上書きします。
Number.prototype.valueOf()
指定されたオブジェクトのプリミティブ値を返します。 Object.prototype.valueOf() メソッドを上書きします。

Number オブジェクトを使用して変数に値を代入する

以下の例では、Number オブジェクトのプロパティを使用して、いくつかの数の変数に値を代入します。

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 の章を参照してください)。

const biggestInt  = Number.MAX_SAFE_INTEGER  //  (253 - 1) =>  9007199254740991
const smallestInt = Number.MIN_SAFE_INTEGER  // -(253 - 1) => -9007199254740991

JSON にシリアライズされたデータを解析する場合、整数値がこの範囲を超えていると、 JSON パーサーがこの値を Number 型に変換したときに信頼できない値になります。

可能な回避策として、代わりに String を使用してください。

大きい数値は BigInt 型を用いて表すことができます。

Number を使用して Date オブジェクトを変換する

以下の例は、 Number を関数として用いて、Date オブジェクトを数値に変換します:

let d = new Date('December 17, 1995 03:24:00')
console.log(Number(d))

これは、コンソールに "819199440000" を出力します。

数字や null を数値に変換する

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

仕様書

仕様書
ECMAScript (ECMA-262)
Number の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
NumberChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 3Opera 完全対応 3Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
EPSILONChrome 完全対応 34Edge 完全対応 12Firefox 完全対応 25IE 未対応 なしOpera 完全対応 21Safari 完全対応 9WebView Android 完全対応 ≤37Chrome Android 完全対応 34Firefox Android 完全対応 25Opera Android 完全対応 21Safari iOS 完全対応 9Samsung Internet Android 完全対応 2.0nodejs 完全対応 0.12
MAX_SAFE_INTEGERChrome 完全対応 34Edge 完全対応 12Firefox 完全対応 31IE 未対応 なしOpera 完全対応 21Safari 完全対応 9WebView Android 完全対応 ≤37Chrome Android 完全対応 34Firefox Android 完全対応 31Opera Android 完全対応 21Safari iOS 完全対応 9Samsung Internet Android 完全対応 2.0nodejs 完全対応 0.12
MAX_VALUEChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 3Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
MIN_SAFE_INTEGERChrome 完全対応 34Edge 完全対応 12Firefox 完全対応 31IE 未対応 なしOpera 完全対応 21Safari 完全対応 9WebView Android 完全対応 ≤37Chrome Android 完全対応 34Firefox Android 完全対応 31Opera Android 完全対応 21Safari iOS 完全対応 9Samsung Internet Android 完全対応 2.0nodejs 完全対応 0.12
MIN_VALUEChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 3Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
NaNChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 3Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
NEGATIVE_INFINITYChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 3Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
Number() constructorChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 3Opera 完全対応 3Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
POSITIVE_INFINITYChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 3Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
isFiniteChrome 完全対応 19Edge 完全対応 12Firefox 完全対応 16IE 未対応 なしOpera 完全対応 15Safari 完全対応 9WebView Android 完全対応 ≤37Chrome Android 完全対応 25Firefox Android 完全対応 16Opera Android 完全対応 14Safari iOS 完全対応 9Samsung Internet Android 完全対応 1.5nodejs 完全対応 0.10
isIntegerChrome 完全対応 34Edge 完全対応 12Firefox 完全対応 16IE 未対応 なしOpera 完全対応 21Safari 完全対応 9WebView Android 完全対応 ≤37Chrome Android 完全対応 34Firefox Android 完全対応 16Opera Android 完全対応 21Safari iOS 完全対応 9Samsung Internet Android 完全対応 2.0nodejs 完全対応 0.12
isNaNChrome 完全対応 25Edge 完全対応 12Firefox 完全対応 15IE 未対応 なしOpera 完全対応 15Safari 完全対応 9WebView Android 完全対応 ≤37Chrome Android 完全対応 25Firefox Android 完全対応 15Opera Android 完全対応 14Safari iOS 完全対応 9Samsung Internet Android 完全対応 1.5nodejs 完全対応 0.10
isSafeIntegerChrome 完全対応 34Edge 完全対応 12Firefox 完全対応 32IE 未対応 なしOpera 完全対応 21Safari 完全対応 10WebView Android 完全対応 ≤37Chrome Android 完全対応 34Firefox Android 完全対応 32Opera Android 完全対応 21Safari iOS 完全対応 10Samsung Internet Android 完全対応 2.0nodejs 完全対応 0.12
parseFloatChrome 完全対応 34Edge 完全対応 12Firefox 完全対応 25IE 未対応 なしOpera 完全対応 21Safari 完全対応 9WebView Android 完全対応 ≤37Chrome Android 完全対応 34Firefox Android 完全対応 25Opera Android 完全対応 21Safari iOS 完全対応 9Samsung Internet Android 完全対応 2.0nodejs 完全対応 0.12
parseIntChrome 完全対応 34Edge 完全対応 12Firefox 完全対応 25IE 未対応 なしOpera 完全対応 21Safari 完全対応 9WebView Android 完全対応 ≤37Chrome Android 完全対応 34Firefox Android 完全対応 25Opera Android 完全対応 21Safari iOS 完全対応 9Samsung Internet Android 完全対応 2.0nodejs 完全対応 0.12
toExponentialChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 7Safari 完全対応 2WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
toFixedChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 7Safari 完全対応 2WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
toLocaleStringChrome 完全対応 1Edge 完全対応 12
補足
完全対応 12
補足
補足 Before Edge 18, numbers are rounded to 15 decimal digits. For example, (1000000000000005).toLocaleString('en-US') returns "1,000,000,000,000,010".
Firefox 完全対応 1IE 完全対応 5
補足
完全対応 5
補足
補足 In Internet Explorer 11, numbers are rounded to 15 decimal digits. For example, (1000000000000005).toLocaleString('en-US') returns "1,000,000,000,000,010".
Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
toPrecisionChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 7Safari 完全対応 2WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
toSource
非標準
Chrome 未対応 なしEdge 未対応 なしFirefox 未対応 1 — 74
補足
未対応 1 — 74
補足
補足 Starting in Firefox 74, toSource() is no longer available for use by web content. It is still allowed for internal and privileged code.
IE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 未対応 なしChrome Android 未対応 なしFirefox Android 完全対応 4Opera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なしnodejs 未対応 なし
toStringChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 3Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100
valueOfChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100

凡例

完全対応  
完全対応
未対応  
未対応
非標準。ブラウザー間の互換性が低い可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
実装ノートを参照してください。
実装ノートを参照してください。

関連情報