コラム:数値について
目次
説明
ここでは、JavaScriptの『数値』について少し触れます。
初心者のうちにはあまり必要のない知識もありますので、飛ばして読んでも構いません。
『整数』と『浮動小数点数』
JavaScriptでは数値を扱えます。この数値には、『整数』と『浮動小数点数』という2つの種類があります。『整数』は小数点の付かない数値です。『浮動小数点数』は小数点が付く数値です。
種類 | 意味 | 例 |
---|---|---|
整数 | 小数点の付かない数値 | 0, 1, 12345, -987, etc. |
浮動小数点数 | 小数点が付く数値 | 0.0, 0.1, 12.56, -987.123, etc. |
『浮動小数点数』
プログラムは0、1の値を持つデータの並びでデータを管理しています。このデータの並びで小数点を表すには、特別な方法を用いなければなりません。そこで多くのプログラミング言語では『浮動小数点数』と呼ばれる方法で、小数点が付いた値を扱います。
この『浮動小数点数』は、小数点の付いた数値を完全に表現することはできません。そのため、小数点の付いた数値を足し算したりしていると、『誤差』が生じることがあります。
// 0.1ずつ数を増加 var f = 0; for (var i = 0; i < 10; i ++) { var s = i + " : " + f.toFixed(20) + " : " + f; document.write(s + "<br>"); f += 0.1; }
【結果】
0 : 0.00000000000000000000 : 0 1 : 0.10000000000000000555 : 0.1 2 : 0.20000000000000001110 : 0.2 3 : 0.30000000000000004441 : 0.30000000000000004 4 : 0.40000000000000002220 : 0.4 5 : 0.50000000000000000000 : 0.5 6 : 0.59999999999999997780 : 0.6 7 : 0.69999999999999995559 : 0.7 8 : 0.79999999999999993339 : 0.7999999999999999 9 : 0.89999999999999991118 : 0.8999999999999999
『.toFixed()』は、数値を固定小数点表記で文字列にする処理です。ここでは、20桁分数値を文字列にしています。『0.1』ずつ足しているのに、値が徐々に変わっていくのが分かると思います。
様々な数値の表記方法
JavaScriptでは、様々な方法で数値を書けます。
『e』を用いた表記
『数値e±整数』と書きます。『e』は指数表記です。『e』以降の数は『10の何乗である』かを表します。プラスは付けても付けなくても構わないです。
document.write(123e+2 + "<br>"); document.write(123e3 + "<br>"); document.write(123e-3 + "<br>");
【結果】
12300 123000 0.123
n進数
『16進数』『8進数』『2進数』でも数値を書くことができます。
進数 | 表記 | 説明 |
---|---|---|
16進数 | 0x~ | ~の部分には16進数の値を書く |
8進数 | 0o~ | ~の部分には8進数の値を書く |
2進数 | 0b~ | ~の部分には2進数の値を書く |
document.write(0x1 + "<br>"); // 16進数 document.write(0x1f + "<br>"); // 16進数 document.write(0o1 + "<br>"); // 8進数 document.write(0o17 + "<br>"); // 8進数 document.write(0b1 + "<br>"); // 2進数 document.write(0b11 + "<br>"); // 2進数
【結果】
1 31 1 15 1 3
特殊な数値
JavaScriptの数値には、特殊な値が用意されています。
JavaScriptの値 | 意味 |
---|---|
Number.MAX_SAFE_INTEGER | JavaScript における確実な整数の最大値(253-1) |
Number.MIN_SAFE_INTEGER | JavaScript における確実な整数の最小値 (-(253-1)) |
Number.MAX_VALUE | 表現可能な正の数の最大値 |
Number.MIN_VALUE | 表現可能な正の数の最小値。0ではない0に最も近い正の数 |
Number.NaN | 数値ではないことを表す特別な値(Not A Number) |
Number.POSITIVE_INFINITY | 無限大を表す特別な値 |
Number.NEGATIVE_INFINITY | 負の無限大を表す特別な値 |
document.write(Number.MAX_SAFE_INTEGER + "<br>"); document.write(Number.MIN_SAFE_INTEGER + "<br>"); document.write(Number.MAX_VALUE + "<br>"); document.write(Number.MIN_VALUE + "<br>"); document.write(Number.NaN + "<br>"); document.write(Number.POSITIVE_INFINITY + "<br>"); document.write(Number.NEGATIVE_INFINITY + "<br>");
【結果】
9007199254740991 -9007199254740991 1.7976931348623157e+308 5e-324 NaN Infinity -Infinity
サンプルの入手
以下は、今回出てきたサンプルです。
ZIPでまとめてダウンロード (右クリックから保存してください)
『sample1.html』(サンプル)を表示
プログラムの中身を見たい場合は、それぞれのHTMLファイルをブラウザで開いたあと、右クリックをして『ソースの表示』を選択してください。
メモ帳で、ファイルの中身を見ることができます。