【JS応用|豆知識】数値処理の基本!Math.floorを正しく使いこなして境界値を制御しよう

導入

JavaScriptで数値計算を行う際、小数点以下の扱いに悩むことはありませんか?特に「ページネーションの計算」や「グリッドレイアウトの列数算出」など、プログラム上で数値を扱う際に、小数点以下を切り捨てて「整数」として扱いたい場面は多々あります。今回は、そんな時に欠かせない組み込み関数「Math.floor」について、その仕組みと現場で役立つ活用術を解説します。

基礎知識

Math.floorとは、与えられた数値に対して「小数点以下を切り捨てて、最も近い小さな整数」を返す関数です。
重要なのは、単なる切り捨てではなく、数直線上で常に左側(マイナス方向)の整数に丸められるという点です。例えば、2.9であれば「2」になりますが、-2.1の場合は「-3」になるという点に注意が必要です。この性質を理解しておくことで、正の数だけでなく、座標計算などで負の数が出てきた際もバグを防ぐことができます。

実装/解決策

Math.floorは、Mathオブジェクトのメソッドとして呼び出します。引数に数値(または数値に変換可能な値)を渡すだけで、結果が返ってきます。
現場でよく遭遇する課題として「特定の桁数で切り捨てる」というケースがありますが、これは「10のn乗」を掛けてからMath.floorし、その後に同じ値を割ることで実現可能です。

サンプルプログラム

以下のコードをブラウザのコンソールなどで実行して、挙動を確認してみてください。

// 基本的な使い方
const price = 125.75;
console.log(Math.floor(price)); // 出力: 125

// 負の数の挙動(-3.1は-4になる点に注意)
console.log(Math.floor(-3.1)); // 出力: -4

// 応用:小数点第2位で切り捨てる方法
// 10を掛けてから切り捨て、10で割る
const value = 3.14159;
const truncated = Math.floor(value  10) / 10;
console.log(truncated); // 出力: 3.1

// 実践:配列からランダムなインデックスを取得する
const items = ['りんご', 'みかん', 'バナナ'];
// Math.random()は0以上1未満の数値を返すため、配列の長さを掛けてからfloorする
const randomIndex = Math.floor(Math.random()  items.length);
console.log(items[randomIndex]); // ランダムにフルーツが表示されます

応用・注意点

現場での開発で特に注意すべきは「型変換」です。もし文字列が混入する可能性がある場合、Math.floorに渡す前に明示的にNumber型へ変換するか、parseIntを検討してください。また、パフォーマンスを極限まで追求する環境下では、Math.floorの代わりに「ビット演算子(~~)」が使われることもあります。
具体的には「~~2.9」と書くと「2」を返します。ただし、ビット演算は32ビット整数に変換されるという制約があるため、非常に大きな数値を扱う場合にはMath.floorを使うのが安全です。可読性と安全性を優先するなら、基本的にはMath.floorを使用することをお勧めします。

タイトルとURLをコピーしました