ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

浮動小数点数から整数へ

「enchant.jsスマートフォンゲーム開発講座」を読んでいたら、見慣れないコードが。

var r = randfloat(0,255)|0:

randfloatは引数の範囲のランダムな値を返す関数で、その結果と0のorをrに代入している。これは色をランダムで求めている箇所のコード。0とのorを取って何か意味があるのだろうかと、orを取らないときと取ったときの演算結果を表示してみてどうなるか確かめてみた。
0とのorを取ることによって、小数点以下の値を切り捨てることが出来る。例えば、123.456なら123となる。
つまり上のコードなら、0から255までの整数値を得ることが出来る。と、いいたいところだが、実はそうならない。ここで使っているrandfloatの実装は次のとおり。

var randfloat = function(min, max) {
    return Math.random()*(max-min)+min;
};

Math.random()は0から1未満のランダムな値を返す関数なので、maxの値になることはない。ということで、0から255ではなく0から254となる。
まあ、ここでのサンプルコードではランダムで色を決めているだけなので、255にならなくても特に問題は無い。