備忘録的プログラミングリファレンス

Number オブジェクト

 Number オブジェクトは、数値を扱うためのオブジェクトです。JavaScript では、数値を Number オブジェクトとして扱います。

 以下の例のように数値として変数を宣言するとします。

変数の宣言
var a = 10;

 10 という数値を変数 a に代入する宣言です。JavaScript では、10が代入された Number オブジェクトaが自動で生成されます。

 JavaScript では数値を 64 ビット長の浮動小数点数として扱います。このことで、整数、浮動小数点、10 進数、2 進数、16 進数、8 進数を扱うことができます。

 JavaScript では以下も数値として扱われます。

  • 無限大( Infinity )
  • 負の無限大( -Infinity )
  • NaN(数値ではない)

 数学的な計算についてはMathページを参照してください。

 ここでは主に Number クラスについて解説します。

ページ内 Index

Number クラス

 Number クラスは数値を扱うためのオブジェクトを生成するための定義です。Number オブジェクトの元になるものです。
 Number クラスは以下のようなコンストラクターを持ちますが利用する機会はほぼないです。

var object_number = new Number(10);

 数値を宣言したところで JavaScript では Number オブジェクトが自動で生成されます。

var a = 10;

 上記の例では、10 という整数リテラルの代入の宣言によって Number オブジェクトaが自動で生成されます。そして、a という変数に 10 が代入されます。

 数値としては、整数、浮動小数点、10進数、2進数、16進数、8進数を扱うことができます。
 特殊な値として以下も数値として扱われます。

  • 無限大( Infinity )
  • 負の無限大( -Infinity )
  • NaN(数値ではない)

レガシー言語との違い

 C言語といったプログラム言語で同じように数値を代入した変数を宣言すると、オブジェクトではなくリテラルな数値のみが代入できる変数が作成されます。

C言語における数値型の宣言
int a = 10;

 オブジェクト指向である JavaScript では基本的にすべてのデータをオブジェクトとして生成します。そのために数値として生成された変数に途中から文字列を代入することができます。

JavaScript Number 型に文字列を代入
var a = 10;
a = 'test';
alert( a );

 上記の例はtestと表示されます。Number 型として生成されたオブジェクトがtestという文字列が代入されることで String 型のオブジェクトに変換されたことが分かります。
 このような変換は C言語ではありません。エラーになります。

 ただし、JavaScript では数値や文字列はすべてオブジェクトとして生成されるのですが、実際にはオブジェクト型データまたはプリミティブ型のデータとしてと2通りの扱いがあります。
 プログラムコードを編集する上ではあまり気にすることがないのですが、エラーを修正する際にたまにオブジェクト型なのかプリミティブ型なのかという問題が出ることに注意してください。

 上記の例では var 修飾子を使用していますが、他にも let、const があります。これらはスコープを明確にする働きがあります。詳しくは変数(Variable)ページvar、let、constを参照してください。

プロパティ(Property)

 Number クラスには以下のプロパティがあります。

プロパティ概要
.constructorオブジェクトそのものへの参照

静的プロパティ

 以下は静的プロパティで、環境によって固定された値を返します。

プロパティ概要
Number.EPSILON1より大きい1との最小値の差
Number.MAX_SAFE_INTEGER扱うことができる最大の整数
Number.MIN_SAFE_INTEGER最小の整数
Number.MAX_VALUE最大の数値
Number.MIN_VALUE最大の数値
Number.NaN数値ではない
Number.NEGATIVE_INFINITY負の無限数値
Number.POSITIVE_INFINITY正の無限数値

 静的プロパティは固定されたプロパティで、主に環境によって扱える数値の範囲などを確認するために使用します。
 使用方法は以下のように Number オブジェクトに静的プロパティを加えて使用します。

静的プロパティの使用例
console( Number.MAX_VALUE );
/* 1.7976931348623157e+308 */

メソッド(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() メソッドは小数点以下の桁数の表示を指定することができます。

.toFixed()
let x = 125.31;
console.log( x.toFixed(0) );	// 125
console.log( x.toFixed(1) );	// 125.3
console.log( x.toFixed(2) );	// 125.31
console.log( x.toFixed(3) );	// 125.310

指数表現 .toExponential()

 .toExponential() メソッドは指数表現の桁数を指定することができます。値は四捨五入されます。

.toFixed()
let x = 56432.31;
console.log( x.toFixed(0) );	// 6e+4
console.log( x.toFixed(1) );	// 5.6e+4
console.log( x.toFixed(2) );	// 5.64e+4
console.log( x.toFixed(3) );	// 5.643e+4

文字列表現 .toString()

 .toString() メソッドは基数(2 進数、10 進数、16 進数など)を指定することができます。

.toFixed()
let x = 15;
console.log( x.toString() );	// 15( 10 進法)
console.log( x.toString(10) );	// 15( 10 進法)
console.log( x.toString(2) );	// 1111( 2 進法)
console.log( x.toFixed(16) );	// f( 16 進法)

3桁ごとの区切り .toLocaleString()

 .toLocaleString() メソッドによって3桁ごとに,を付加することができます。
 .toLocaleString() メソッドは地域ごとに合わせた数値の表現をするメソッドです。ただし、文字列に変換することに注意してください。詳しくは数値の書式についてを参照してください。

toLocaleString()
var num=123456789;
var txt_num = num.toLocaleString();
..
txt_num は  になります

 ただし、この方法では小数点以下で丸め込み処理が起きます。もし丸められたくない場合は、maximumFractionDigits オプションを利用します。

maximumFractionDigits オプション
var num=123456789.123456789;
var txt_num = num.toLocaleString( undefined, { maximumFractionDigits: 10 });
..
txt_num は  になります

 maximumFractionDigits オプションの指定値は丸め込みが起きない桁数です。

Example

 Number の静的プロパティの例です。

 確認ボタンをクリックしてみてください。

確認ボタンをクリックしてください。以下のHTML,CSS,Scriptコード例が実行されます。