Number オブジェクト
Number オブジェクトは、数値を扱うためのオブジェクトです。JavaScript では、数値を Number オブジェクトとして扱います。
以下の例のように数値として変数を宣言するとします。
10 という数値を変数 a に代入する宣言です。JavaScript では、10
が代入された Number オブジェクトa
が自動で生成されます。
JavaScript では数値を 64 ビット長の浮動小数点数として扱います。このことで、整数、浮動小数点、10 進数、2 進数、16 進数、8 進数を扱うことができます。
JavaScript では以下も数値として扱われます。
- 無限大( Infinity )
- 負の無限大( -Infinity )
- NaN(数値ではない)
数学的な計算についてはMath
ページを参照してください。
ここでは主に Number クラスについて解説します。
ページ内 Index
Number クラス
Number クラスは数値を扱うためのオブジェクトを生成するための定義です。Number オブジェクトの元になるものです。
Number クラスは以下のようなコンストラクターを持ちますが利用する機会はほぼないです。
数値を宣言したところで JavaScript では Number オブジェクトが自動で生成されます。
上記の例では、10 という整数リテラルの代入の宣言によって Number オブジェクトa
が自動で生成されます。そして、a という変数に 10 が代入されます。
数値としては、整数、浮動小数点、10進数、2進数、16進数、8進数を扱うことができます。
特殊な値として以下も数値として扱われます。
- 無限大( Infinity )
- 負の無限大( -Infinity )
- NaN(数値ではない)
レガシー言語との違い
C言語といったプログラム言語で同じように数値を代入した変数を宣言すると、オブジェクトではなくリテラルな数値のみが代入できる変数が作成されます。
オブジェクト指向である JavaScript では基本的にすべてのデータをオブジェクトとして生成します。そのために数値として生成された変数に途中から文字列を代入することができます。
上記の例はtest
と表示されます。Number 型として生成されたオブジェクトがtest
という文字列が代入されることで String 型のオブジェクトに変換されたことが分かります。
このような変換は C言語ではありません。エラーになります。
ただし、JavaScript では数値や文字列はすべてオブジェクトとして生成されるのですが、実際にはオブジェクト型データまたはプリミティブ型のデータとしてと2通りの扱いがあります。
プログラムコードを編集する上ではあまり気にすることがないのですが、エラーを修正する際にたまにオブジェクト型なのかプリミティブ型なのかという問題が出ることに注意してください。
上記の例では var 修飾子を使用していますが、他にも let、const があります。これらはスコープを明確にする働きがあります。詳しくは変数(Variable)ページ
のvar、let、const
を参照してください。
プロパティ(Property)
Number クラスには以下のプロパティがあります。
プロパティ | 概要 |
---|---|
.constructor | オブジェクトそのものへの参照 |
静的プロパティ
以下は静的プロパティで、環境によって固定された値を返します。
プロパティ | 概要 |
---|---|
Number.EPSILON | 1より大きい1との最小値の差 |
Number.MAX_SAFE_INTEGER | 扱うことができる最大の整数 |
Number.MIN_SAFE_INTEGER | 最小の整数 |
Number.MAX_VALUE | 最大の数値 |
Number.MIN_VALUE | 最大の数値 |
Number.NaN | 数値ではない |
Number.NEGATIVE_INFINITY | 負の無限数値 |
Number.POSITIVE_INFINITY | 正の無限数値 |
静的プロパティは固定されたプロパティで、主に環境によって扱える数値の範囲などを確認するために使用します。
使用方法は以下のように Number オブジェクトに静的プロパティを加えて使用します。
メソッド(Method)
数値を文字列に変換するには、.toString()
メソッドを使用します。
その他にも、以下のように数値を文字列に変換するメソッドがあります。
メソッド | 概要 |
---|---|
.toExponential() | 数値を指数表記の文字列に変換 |
.toFixed() | 数値を固定小数点表記の文字列に変換 |
.toLocaleString() | 数値を言語依存の文字列に変換 |
.toPrecision() | 数値を固定小数点または指数表記の文字列に変換。精度は指定可能 |
.toString() | 数値を文字列に変換 |
.valueOf() | Number オブジェクトをプリミティブ値として返す |
静的メソッド
以下は静的メソッドで、環境によって固定された値を返します。
メソッド | 概要 |
---|---|
Number.isFinite() | 有限数であるか |
Number.isInteger() | 整数であるか |
Number.isNaN() | NaN であるか |
Number.isSafeInteger() | 扱うことのできる範囲の整数であるか。(-(253 - 1) から 253 - 1 の間) |
Number.parseFloat() | 浮動小数点値として返す。グローバルの parseFloat() 関数もある |
Number.parseInt() | 整数値として返す。グローバルの parseInt() 関数もある |
Number.parseFloat()、Number.parseInt() 関数は文字列の数値部分を取り出すことができる。グローバル関数としてもあるので Number.parseInt() のみでも使用できる。
固定少数点数 .toFixed()
.toFixed() メソッドは小数点以下の桁数の表示を指定することができます。
指数表現 .toExponential()
.toExponential() メソッドは指数表現の桁数を指定することができます。値は四捨五入されます。
文字列表現 .toString()
.toString() メソッドは基数(2 進数、10 進数、16 進数など)を指定することができます。
3桁ごとの区切り .toLocaleString()
.toLocaleString() メソッドによって3桁ごとに,
を付加することができます。
.toLocaleString() メソッドは地域ごとに合わせた数値の表現をするメソッドです。ただし、文字列に変換することに注意してください。詳しくは数値の書式について
を参照してください。
ただし、この方法では小数点以下で丸め込み処理
が起きます。もし丸められたくない場合は、maximumFractionDigits オプションを利用します。
maximumFractionDigits オプションの指定値は丸め込みが起きない桁数です。
Example
Number の静的プロパティの例です。
確認
ボタンをクリックしてみてください。