質問: javascriptにおけるチルダ演算子(~~)は、小数点を切り捨てることができるみたいですが、Math.floorと違って使い道はありますか。
回答: 実数を整数化したい場合というのは、「どう整数化したいか」にいろいろなケースがありますが、多くのプログラミング言語で、標準的に用意されているのは4種類くらいです。 1. ゼロ方向に丸める 2. 正の無限大方向に丸める 3. 負の無限大方向に丸める 4. 小数点以下一桁目を四捨五入する これ以外にも数ケースありますが、詳しくはWikipediaの「端数処理」でも見てください。 `~`は、整数にだけ有効なビット否定演算子なので、実数に適用するとまず実数の整数への丸めが起こります。このときのやり方は、上記 1 です。ビット否定を二回つまり`~~`することで元に戻るので、整数化された値が結果の値となります。 Math.floorはこれと違って、床(floor)方向つまり負の無限大への丸めなので、負の数の場合に`~~`の結果と違います。 ~~(-1.1) ⇒ -1 Math.floor(-1.1) ⇒ -2 つまり、結果が違うので、目的に応じて適切に使い分けるというのが正しい考え方です。 1 のやり方は他にもあるので、わかりやすいやり方を選ぶのがいいかと思います。