JavaScript/数値
数値(すうち、number)とは数、すなわち数量を表す概念です。JavaScriptの数値はいたって簡単です。Numberはプリミティブ型の数値に対応するオブジェクトです。
概要[編集]
JavaScriptでは整数と浮動小数点数がサポートされています。浮動小数点数とは実数のコンピュータによる近似です。IEEE754の倍精度64ビットが使われます。
プログラミング言語における整数の書き方を整数リテラル(せいすうリテラル、integer literal)、浮動小数点数の書き方を浮動小数点リテラル(ふどうしょうすうてんリテラル、floating point literal)といいます。リテラル (literal) とは文字通り、文字のことを意味しますが、変数に対して定数のことであると捉えることもできます。
整数[編集]
整数リテラルは次のような形をしています。
42
-1
0
864e5
0xFFFF
いずれもふつうの整数ですが、864e5
というのは科学的表記法で()、すなわち86400000
に等しい数値です。0xFFFF
というのは十六進法による表示で、十進法の65535
に等しい数値です。JavaScriptにおいて0xFFFF
と65535
はまったく同じ数値として扱われます(ただし、文字列に変換した場合はこの限りではありません)。
JavaScriptには二進法や八進法の整数リテラルはありませんでしたが、ECMA-262第6版で導入されました。
0b1101
⇒ 130o3162
⇒ 1650
二進法の整数リテラルは 0b
(あるいは0B
)を前置し、八進法の整数リテラルは0o
(あるいは0o
)を前置します[1]。
0
だけを前置する八進法の整数リテラルは過去にサポートされていましたがECMA-262第3版で削除されました。多くの処理系では後方互換のために依然として八進法の整数リテラルをサポートしていますが、非推奨とされています。
浮動小数[編集]
一方、浮動小数点リテラルは次のような形をしています。
0.5
.5
-1.4142135623730951
3.141592653589793
1.0e-8
1.0e-8
は、すなわち0.00000001
と等しい数値です。
整数と浮動小数点数[編集]
JavaScriptにおいて、32ビット符号なし整数・32ビット符号付き整数・64ビット浮動小数が1つの数値にまとめられています。C言語などとは異なり、整数同士の演算で32ビットで表現できる範囲を超えた場合は、64ビット浮動小数に自動的に切り替わります。
typeof 演算子のような手法で、この3種のうちどれが使われているかを判定する演算子は存在しません。しかしながら、ビット演算子を使うことにより、64ビット浮動小数を32ビット符号なし整数や32ビット符号付き整数に変換できます。具体的には、>>> 演算子により、32ビット符号なし整数になり、その他のビット演算子により、32ビット符号付き整数に変換されます。64ビット浮動小数は53ビット符号付き整数を誤差なく表現できるため、32ビット符号なし整数や32ビット符号付き整数を意図的に64ビット浮動小数に切り替える方法は JavaScript の言語仕様には存在しません。
発展的な知識[編集]
NaN[編集]
- 「NaN」も参照
NaN(ナン、Not a Number、非数、ひすう)とは、数値でないことを表す特殊な値です。
Number[編集]
NumberオブジェクトはJavaScriptのプリミティブ型である数値型をラップします。Numberコンストラクタに数値として解釈できないオブジェクト(たとえば "A"
などの文字列)を渡すと、NaN
を返します。
var two = new Number(2);
NumberオブジェクトのインスタンスとJavaScriptの数値は厳密には等しくないことに注意してください。
new Number(1) == 1; // true
// しかし
new Number(1) === 1; // false
/*
* なぜならば
* typeof new Number(1) == 'object' かつ
* typeof 1 == 'number' なので
*/
ただし、プリミティブ型の数値に対して、メソッド呼び出しをすると、自動的に Number オブジェクトが作られます。
また、Number 関数により、他の型の値をプリミティブ型の数値に型変換します。
var two = Number("2");
プロパティ[編集]
- JavaScriptで表すことのできる最大の数
- JavaScriptで表すことのできる最小の数
- 非数
- 負の無限大
- 正の無限大 (Infinity)
- Numberオブジェクトのプロトタイプ
メソッド[編集]
- toExponential
- toFixed
- toLocaleString
- toPrecision
- toString
- このオブジェクトの文字列表現を返す。
- valueOf
- このオブジェクトのプリミティブ値を返す。
関連項目[編集]
- Math - 数学関数と定数