コラム:数値について

目次

説明

ここでは、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ファイルをブラウザで開いたあと、右クリックをして『ソースの表示』を選択してください。

メモ帳で、ファイルの中身を見ることができます。