Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
Number (数値)の値は 37 や -9.25 のような浮動小数点数を表します。
Number コンストラクターは、数値を扱うための定数とメソッドを含んでいます。他の型の値は Number() 関数を用いて数値に変換することができます。
数値は、255 や 3.14159 のようなリテラル形式で表現するのが最も一般的です。字句文法には、より詳しい参照があります。
JavaScript コードにおける 37 のような数値リテラルは浮動小数点値であり、整数ではありません。日常的に使用される独立した整数型はありません。(JavaScript は長整数 (BigInt) 型を持つようになりましたが、日常の利用で数値を置き換えるように設計されてはいません。 37 は数値であり、長整数ではありません。)
関数として使用された場合、 Number(value) は文字列やその他の値を数値型に変換します。値が変換できない場合は、 NaN を返します。
JavaScript の数値 (Number) 型は IEEE 754 の倍精度 64ビットバイナリー形式であり、 Java や C# の double のようなものです。つまり、小数値を表しますが、格納される数値の大きさと精度には制限があります。とても簡単に説明すると、IEEE 754 の倍精度数は、3 つの部分を表すのに 64 ビットを使用します。
仮数部(significand とも呼ばれる)は、実際の値を表す部分(有効数字)です。指数は、仮数を乗じるべき 2 のべき乗です。科学的記数法として考えると、次のようになります。
Number=(−1)sign⋅(1+mantissa)⋅2exponent\text{Number} = ({-1})^{\text{sign}} \cdot (1 + \text{mantissa}) \cdot 2^{\text{exponent}}仮数部は 52 ビットで格納され、2 進数の小数でいうところの 1.… 以降の桁と解釈されます。したがって,仮数部の精度は 2-52(Number.EPSILON で取得可能)、すなわち 10 進で 15 ~ 17 桁程度の有効数字となります。演算は丸め誤差の影響を受けます。
数値が保持できる最大の値は 21023 × (2 - 2-52)(2 進数で指数が 1023、仮数が 0.1111...)であり、これは Number.MAX_VALUE で取得可能です。それ以上の値は、特殊な数値定数 Infinity で置き換えられます。
整数は、仮数が 53 ビット(先頭の 1 も含む)しか保持できないため、精度を落とさずに表せるのは -253 + 1 から 253 - 1 の範囲(Number.MIN_SAFE_INTEGER と Number.MAX_SAFE_INTEGER で取得できる)だけです。
これについては、ECMAScript 標準に記述されています。
数字を期待する多くの組み込み演算は、最初に引数を数字に変換します(Numberオブジェクトが数字プリミティブと似たような動作をするのは、このためです)。この操作 は以下のように要約されます。
JavaScript でほぼ同じ効果を得るには、2 つの方法があります。
Number.parseFloat() および Number.parseInt() は Number() と似ていますが、文字列のみを若干異なる解釈ルールで変換します。例えば、parseInt() は小数点を解釈せず、 parseFloat() は 0x の接頭辞を解釈しません。
演算子の中には整数を期待するものがあり ます。特に、配列や文字列の添字、時刻の成分、数値の基数を扱う演算子はそうです。上記の数値強制の手順を実行した後、結果は切り捨てて(小数部分を捨てて)整数に変換します。数値が無限大 (±Infinity) の場合は、そのまま返します。数値が NaN または -0 の場合、0 を返します。したがって、結果は常に整数(-0ではない)か ±Infinity となります。
注目すべきは、整数に変換すると undefined も null も 0 になることです。これは undefined が NaN に変換され、これも 0 になるためです。
JavaScript には整数の 2 進数エンコーダーを処理する低レベルの関数がいくつかあり、特にビット演算子と TypedArray オブジェクトが有名です。ビット演算子は常にオペランドを 32 ビット整数に変換します。この場合、値を数値に変換した後、最初の切り捨てで小数部を取り除き、次に整数の 2 の補数で最低ビットを導いて、数値を指定の幅に正規化します。
Number オブジェクトを生成します。関数として呼び出された場合は、数値型のプリミティブ値を返します。
数値として表される 2 個の数の最小の差です。
Number.MAX_SAFE_INTEGERJavaScript における確実な整数の最大値 (253 - 1) です。
Number.MAX_VALUE表現可能な正の数の最大値です。
Number.MIN_SAFE_INTEGERJavaScript における確実な整数の最小値 (-(253 - 1)) です。
Number.MIN_VALUE表現可能な正の数の最小値。0 に最も近い正の数です(0 ではありません)。
Number.NaN特殊な "Not a Number" (数値ではない)の値です。
Number.NEGATIVE_INFINITY負の無限大を表す特別な値です。オーバーフロー時に返されます。
Number.POSITIVE_INFINITY無限大を表す特別な値です。オーバーフロー時に返されます。
渡された値が有限数であるかどうかを判断します。
Number.isInteger()渡された値が整数であるかどうかを判断します。
Number.isNaN()渡された値が NaN であるかどうかを判断します。
Number.isSafeInteger()渡された値が確実な範囲の整数(-(253 - 1) から 253 - 1 の間)であるかどうかを判断します。
Number.parseFloat()これはグローバルの parseFloat() 関数と同じです。
Number.parseInt()これはグローバルの parseInt() 関数と同じです。
これらのプロパティは Number.prototype に定義されており、すべての Number インスタンスで共有されます。
Number.prototype.constructorインスタンスオブジェクトを作成したコンストラクター関数。Number インスタンスの場合、初期値は Number コンストラクターです。
指数表記で数値を表す文字列を返します。
Number.prototype.toFixed()固定小数点表記で数値を表す文字列を返します。
Number.prototype.toLocaleString()この値を言語依存の表現で表す文字列を返します。 Object.prototype.toLocaleString() メソッドを上書きします。
Number.prototype.toPrecision()指定された精度で、固定小数点表記または指数表記で数値で表す文字列を返します。
Number.prototype.toString()指定された基数を元に、指定されたオブジェクトを表す文字列を返します。 Object.prototype.toString() メソッドを上書きします。
Number.prototype.valueOf()指定されたオブジェクトのプリミティブ値を返します。 Object.prototype.valueOf() メソッドを上書きします。
以下の例では、Number オブジェクトのプロパティを使用して、いくつかの数の変数に値を代入します。
次の例は、Number オブジェクトで表現可能な最小の整数値と最大の整数値です。
JSON にシリアライズされたデータを解析する場合、整数値がこの範囲を超えていると、 JSON パーサーがこの値を Number 型に変換したときに信頼できない値になります。
可能な回避策として、代わりに String を使用してください。
大きい数値は BigInt 型を用いて表すことができます。
以下の例は、 Number を関数として用いて、Date オブジェクトを数値に変換します。
これは、コンソールに 819199440000 を出力します。
| ECMAScript® 2027 Language Specification # sec-number-objects |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。