Java Tips | 基本ユーティリティ:Math.floor()

Web APP Java
スポンサーリンク
スポンサーリンク

Math.floor()とは何か

Javaで業務システムを開発していると、小数を「必ず切り捨てたい」場面が数多く登場します。

例えば、

  • 商品価格の表示
  • ポイント計算
  • 税額計算
  • ページ数計算
  • 在庫計算
  • 統計データの集計

などです。

そのような場面で利用するのが Math.floor() です。

Math.floor(値)
Java

このメソッドは、小数点以下を切り捨てて、その値以下の最大の整数値を返します。

JavaのMathクラスに含まれており、実務でも非常によく利用される数学系ユーティリティです。

まずは「切り捨て」を理解しよう

初心者が最初に覚えるべきポイントです。

Math.floor()は単純な「小数切り捨て」と少し似ていますが、正確には「指定された値以下の最大の整数を返す」メソッドです。

元の値結果
10.110.0
10.510.0
10.910.0
20.020.0

小数部分がすべて取り除かれています。

Math.floor()の基本構文

まずは最もシンプルな例を見てみましょう。

// 小数
double value = 10.8;

// 切り捨て
double result =
        Math.floor(value);

// 結果表示
System.out.println(result);
Java

実行結果

10.0

10.8が10.0へ切り捨てられています。

ステップバイステップで理解する

ステップ1:小数値を用意する

// 商品価格
double price = 1980.99;
Java

現在は小数部分があります。

ステップ2:Math.floor()を実行する

// 切り捨て
double roundedPrice =
        Math.floor(price);
Java

ステップ3:結果を確認する

// 出力
System.out.println(roundedPrice);
Java

実行結果

1980.0

小数部分が取り除かれています。

戻り値はdouble型である

初心者が特に注意すべきポイントです。

Math.floor()は整数を返すように見えますが、実際には double 型を返します。

double result =
        Math.floor(10.8);
Java

結果は 10.0 になります。

負の数の場合に注意しよう

ここがMath.floor()を正しく理解する最重要ポイントです。

正の数

System.out.println(
        Math.floor(10.8)
);
Java

実行結果

10.0

負の数

System.out.println(
        Math.floor(-10.8)
);
Java

実行結果

-11.0

初心者が驚くポイントです。

Math.floor()は単純に小数部分を削除するのではなく、「その値以下の最大の整数」を返します。

そのため、-10.8 → -11.0 になります。

castとの違いを理解しよう

初心者が最も間違えやすいポイントです。

intへキャスト

double value = -10.8;

// キャスト
int result = (int)value;

System.out.println(result);
Java

実行結果

-10

Math.floor()

double value = -10.8;

// floor
double result =
        Math.floor(value);

System.out.println(result);
Java

実行結果

-11.0

結果が大きく異なるため、実務では用途を正しく使い分ける必要があります。

実務でよくある利用例① ポイント計算

// 購入金額
double amount = 985.6;

// 100円ごとに1ポイント
double point =
        Math.floor(
                amount / 100
        );

System.out.println(point);
Java

実行結果

9.0

100円未満を切り捨ててポイント計算できます。

実務でよくある利用例② ページ数計算

// 総件数
double totalCount = 123;

// 1ページ表示件数
double pageSize = 10;

// 完全ページ数
double fullPages =
        Math.floor(
                totalCount / pageSize
        );

System.out.println(fullPages);
Java

実行結果

12.0

実務でよくある利用例③ 売上集計

// 平均売上
double avgSales =
        12589.75;

// 表示用
double displayValue =
        Math.floor(avgSales);

System.out.println(displayValue);
Java

実行結果

12589.0

実務でよくある利用例④ 距離表示

// 距離
double distance = 12.9;

// 切り捨て表示
double displayDistance =
        Math.floor(distance);

System.out.println(
        displayDistance + "km"
);
Java

実行結果

12.0km

小数第2位で切り捨てする方法

実務では小数点以下の指定桁で切り捨てたい場合がよくあります。

// 金額
double amount = 10.239;

// 小数第2位で切り捨て
double result =
        Math.floor(
                amount * 100
        ) / 100;

System.out.println(result);
Java

実行結果

10.23

帳票出力や画面表示で頻繁に利用されるテクニックです。

Math.round()との違い

Math.floor()

Math.floor(10.7);
Java

結果:10.0

Math.round()

Math.round(10.7);
Java

結果:11

メソッド10.410.510.9
floor10.010.010.0
round101111

Math.ceil()との違い

メソッド動作
floor切り捨て
round四捨五入
ceil切り上げ

実務で使えるテンプレート集

基本切り捨てテンプレート

// 小数切り捨て
double result =
        Math.floor(value);
Java

ポイント計算テンプレート

// ポイント算出
double point =
        Math.floor(
                amount / 100
        );
Java

小数第2位切り捨てテンプレート

// 小数第2位
double result =
        Math.floor(
                value * 100
        ) / 100;
Java

表示用テンプレート

// 表示用数値
double displayValue =
        Math.floor(value);
Java

情報セキュリティの観点から見る重要性

Math.floor()自体はセキュリティ機能ではありません。

しかし業務システムでは数値丸め処理が重要な業務ルールになることがあります。

  • ポイント付与
  • 利用料金計算
  • 割引率計算
  • API利用制限
  • アクセス数制御

誤った丸め処理は、金額不整合やポイント誤付与、集計ミスにつながる可能性があります。

特に会計や金融分野では、Math.floor()だけではなくBigDecimalによる厳密な丸め処理も理解しておくことが重要です。

初心者が覚えておくべき重要ポイント

  • 小数を切り捨てるメソッドである
  • 戻り値はdouble型である
  • 正の数と負の数で動作が異なるように見えるため理解が重要
  • castとは結果が異なる場合がある
  • ポイント計算で頻出する
  • 小数第2位切り捨てにも応用できる
  • Math.round()やMath.ceil()との違いを理解する

まとめ

Math.floor()は、指定された値以下の最大の整数を返すJava標準メソッドです。

  • 小数を切り捨てできる
  • 常に下方向へ丸める
  • 負の数では特に注意が必要
  • ポイント計算や集計処理で活躍する
  • 小数第2位の切り捨てにも応用できる
  • Math.round()やMath.ceil()と用途が異なる
  • Java開発者が必ず覚えておきたい数学系ユーティリティである

特に業務システムでは、「端数は切り捨てる」という要件が非常に多く存在します。Math.floor()を正しく理解することで、料金計算やポイント付与、統計データ集計などを安全かつ分かりやすく実装できるようになります。また、負の数での挙動やcastとの違いまで理解しておくことで、実務レベルの数値処理スキルを身につけることができます。

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