本に載っていた浮動小数点数を整数にする方法。本には正の値の場合しか載っていなかったので、負の場合もやってみた。
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()を使わないように注意しないと。