JavaScript では数値として10進数、8進数、16進数、実数、浮動小数を使用できます。0 で始まる整数は8進数、0xで始まる整数は16進数と解釈されます。
12345 // 10進数の12345 1.23 // 実数の 1.23 1.23e4 // 1.23 × 10の4乗 1.23E4 // 1.23 × 10の4乗 0777 // 8進数の777 0xff88 // 16進数のFF88
value を値として持つ数値オブジェクトを生成します。「すべての型をオブジェクトタイプとして実装する」というポリシーで用意されていますが、あまり用いられることはありません。数値と数値オブジェクトは厳密には異なります。
xx = new Number(123); yy = 123; zz = xx + yy; alert(typeof(xx)); // object(数値オブジェクト) alert(typeof(yy)); // number(数値) alert(typeof(zz)); // number(演算結果は数値)
Netscape ブラウザで、<script> タグの language 属性に JavaScript1.2 を使用したときのみ、文字列の "123" と数値の 123 は別の値として解釈されるので注意しましょう。例えば、フォームに入力した値は文字列として扱われるので、次の例ではフォームに 123 を入力して OK ボタンを押しても「違うよ!!」が表示されてしまいます。
<script type="text/javascript"> <!-- function check() { if (document.F1.T1.value == 123) { alert("正解!!"); } else { alert("違うよ!!"); } } // --> </script> <form name="F1" action="#"> <input type="text" name="T1"> <input type="button" value="OK" onclick="check()"> </form>
文字列を数値に変換するには parseInt()、parseFloat()、Number() を用いるか、0 を減算することによっても、変換できます。
str = "123"; num1 = parseInt(str); num2 = parseFloat(str); num3 = Number(str); num4 = str - 0;
toString() を用いて、数値を radix 進数(2〜36。省略時は10)の文字列に変換することができます。例えば下記の例では、65535 を 16 進数を示す文字列 "ffff" に変換します。
xx = 65535; alert(xx.toString(16));
NaN は、数値ではないことを示す特別な値です。== などの比較演算子では使用することはできないので、確認には isNaN() を用います。
var mon = 13; if ((mon < 1) || (12 < mon)) { mon = Number.NaN; } if (isNaN(mon)) { alert("月の指定が誤っています。"); }
MAX_VALUE は利用可能な最大値(約 1.79769e308)。MIN_VALUE は利用可能な最小値(約 2.22507e-308)を示します。
xx = 1.8 * 1.0e308; if (xx >= Number.MAX_VALUE) { alert("計算可能な範囲を超えました"); }
POSITIVE_INFINITY は正の無限大を示す特別な数値。NEGATIVE_INFINITY は負の無限大を示す特別な数値を示します。乗算などの演算が、JavaScript で扱える値の範囲を超えた場合をチェックすることができます。
xx = 1.8 * 1.0e308; if ((xx == Number.POSITIVE_INFINITY) || (xx == Number.NEGATIVE_INFINITY)) { alert("計算可能な範囲を超えました"); }