Number

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

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

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

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

Number0b101, 0o13, 0x0A のようなリテラル形式で表現することもできます。数値の字句文法はこちらを参照してください。

解説

関数として使用された場合、 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 における確実な整数の最大値 (2^53 - 1) です。

Number.MAX_VALUE

表現可能な正の数の最大値です。

Number.MIN_SAFE_INTEGER

JavaScript における確実な整数の最小値 (-(2^53 - 1)) です。

Number.MIN_VALUE

表現可能な正の数の最小値。0 に最も近い正の数です (0 ではありません)。

Number.NaN

特殊な "Not a Number" (数値ではない) の値です。

Number.NEGATIVE_INFINITY

負の無限大を表す特別な値です。オーバーフロー時に返されます。

Number.POSITIVE_INFINITY

無限大を表す特別な値です。オーバーフロー時に返されます。

Number.prototype

Number オブジェクトへプロパティの追加ができるようにします。

静的メソッド

Number.isNaN()

渡された値が NaN であるかどうかを判断します。

Number.isFinite()

渡された値が有限数であるかどうかを判断します。

Number.isInteger()

渡された値が整数であるかどうかを判断します。

Number.isSafeInteger()

渡された値が確実な範囲の整数 (-(2^53 - 1) から 2^53 - 1 の間) であるかどうかを判断します。

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  //  (2**53 - 1) =>  9007199254740991
const smallestInt = Number.MIN_SAFE_INTEGER  // -(2**53 - 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

仕様書

Specification
ECMAScript Language Specification
# sec-number-objects

ブラウザーの互換性

BCD tables only load in the browser

関連情報

  • 最新の Number の動作(2 進数と 8 進数のリテラルに対応)のポリフィルは core-js にあります
  • NaN
  • 算術演算子
  • Math グローバルオブジェクト
  • 任意の精度の整数型: BigInt