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

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

浮動小数点数を整数にする方法

本に載っていた浮動小数点数を整数にする方法。本には正の値の場合しか載っていなかったので、負の場合もやってみた。

var test0 = Math.floor(1.414);
var test1 = ~~(1.732);
var test2 = (2.362)|0;
var test3 = parseInt(3.141);

var test4 = Math.floor(-1.414);
var test5 = ~~(-1.732);
var test6 = (-2.362)|0;
var test7 = parseInt(-3.141);

document.write(test0 + "<br/>");
document.write(test1 + "<br/>");
document.write(test2 + "<br/>");
document.write(test3 + "<br/>");
document.write(test4 + "<br/>");
document.write(test5 + "<br/>");
document.write(test6 + "<br/>");
document.write(test7 + "<br/>");

実行結果
1
1
2
3
-2
-1
-2
-3

Math.floor()以外は小数点以下を切り捨てた値になっている。Math.floor()は渡した値の中から最も小さい整数を返すので、負の場合は切り捨てた値にはなっていない。
~~(x)は2回ビット反転(NOR)を行うということかな。x|0は0と論理和(OR)を取り、parseInt()は文字列の指定された基数の整数を返す関数。基数を指定せず、文字列が0xや0から始まっていないので基数は10となる。
どれを使うのがいいんだろう。コード見て分かりやすいのはMath.floor()かな。でも、小数点以下を切り捨てるつもりでMath.floor()を使わないように注意しないと。