メモを揉め

お勉強の覚書。

Math.floor()を短く書く

javascriptではビット演算をすると、自動的に整数に変換されるよ

 

なので、

 

var x = 5,

    a = 3.98;

とした時

 

Math.floor()を使うと、

 

x - Math.floor(a);    // 2

となるところを

 

x - (a | 0);    // 2

と、ビット演算を使って短く書ける。(正確にはMath.floor()と同義ではない、追記しました)

 

さらに、~を2回使うともっと短くなる

 

x - ~~a;    // 2

 

 嬉しい。

 

ー2013.12.1 追記ー

コメントでのご指摘を受け修正しました。

 

Math.floor()と同じになるのは数値が正の時だけなんだぜ。

Math.floor()は小数点以下切り下げになるのに対し、ビット演算の場合は単に小数点以下の情報を破棄するだけなんだぜ。

 

Math.floor(-a);        // -3.98 --> -4

-a | 0;                // -3.98 --> -3

x + Math.floor(-a);    // 1

x + (-a | 0);          // 2

 

知らないと大変。