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 ではありません。)
Number
は 0b101
, 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