Math.floor()とは何か
Javaで業務システムを開発していると、小数を「必ず切り捨てたい」場面が数多く登場します。
例えば、
- 商品価格の表示
- ポイント計算
- 税額計算
- ページ数計算
- 在庫計算
- 統計データの集計
などです。
そのような場面で利用するのが Math.floor() です。
Math.floor(値)Javaこのメソッドは、小数点以下を切り捨てて、その値以下の最大の整数値を返します。
JavaのMathクラスに含まれており、実務でも非常によく利用される数学系ユーティリティです。
まずは「切り捨て」を理解しよう
初心者が最初に覚えるべきポイントです。
Math.floor()は単純な「小数切り捨て」と少し似ていますが、正確には「指定された値以下の最大の整数を返す」メソッドです。
| 元の値 | 結果 |
|---|---|
| 10.1 | 10.0 |
| 10.5 | 10.0 |
| 10.9 | 10.0 |
| 20.0 | 20.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.4 | 10.5 | 10.9 |
|---|---|---|---|
| floor | 10.0 | 10.0 | 10.0 |
| round | 10 | 11 | 11 |
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との違いまで理解しておくことで、実務レベルの数値処理スキルを身につけることができます。
