【Java】3分あれば完全理解!floorを使って小数点以下の切り捨てを行う!
小数点以下の切り捨てを行う場合にはMathクラスのfloorメソッドを使用します。
Mathクラスのfloorメソッドは、引数より小さいか等しい整数を戻すメソッドとなります。
切り捨てを行うということは,指定した数値より小さいか等しい整数値の中で,数直線状で表した場合、対象の数値との距離が最も小さい整数値を求めることになります。
今回はListクラスのfloorをメソッドを使って以下の場合に小数点以下の切り捨てを行います。
⚫︎ 正の数の小数点以下の切り捨てを行う場合
⚫︎ 負の数の小数点以下の切り捨てを行う場合
⚫︎ 無限大のの小数点以下の切り捨てを行う場合
⚫︎ NaN(非数)の小数点以下の切り捨てを行う場合
目次
floorメソッドとは
Mathクラスのfloorメソッドは、引数より小さいか等しい数学の整数を戻すメソッドとなります。
floorメソッドの書き方
floorメソッドの構文は下記となります。
1 |
Math.floor(数値); |
floorの()に数値を指定することで指定した数値より小さい数学の整数をDouble型で返します。
しかし、引数が整数、無限大、NaNの場合はパラメータをそのまま戻します。
小数点以下の切り捨てを行うサンプルコード
小数点以下の切り捨てを行うサンプルコードを紹介します。
正の数である場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// 小数点以下の切り捨てを行う public class Main { public static void main(String[] args) throws Exception { double[] values1 = {3.3, 3.8}; for (double val : values1) { // 小数点以下の切り捨てをする System.out.println( val + "の端数切り捨て結果⇒ " + Math.floor(val)); // int型にキャストする System.out.println( val + "をint型にキャスト⇒" + (int) val); System.out.println(); } } } |
出力結果
3.3の端数切り捨て結果⇒ 3.0
3.3をint型にキャスト⇒3
3.8の端数切り捨て結果⇒ 3.0
3.8をint型にキャスト⇒3
floorメソッドで小数点以下を切り捨てて表示しています。
負の数である場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// 小数点以下の切り捨てを行う public class Main { public static void main(String[] args) throws Exception { double[] values2 = {-3.3, -3.8}; for (double val : values2) { // 小数点以下の切り捨てをする System.out.println( val + "の端数切り捨て結果⇒ " + Math.floor(val)); // int型にキャストする System.out.println( val + "をint型にキャスト⇒" + (int) val); System.out.println(); } } } |
出力結果
-3.3の端数切り捨て結果⇒ -4.0
-3.3をint型にキャスト⇒-3
-3.8の端数切り捨て結果⇒ -4.0
-3.8をint型にキャスト⇒-3
負の整数の場合は数字が大きいほど小さくなる為、切り捨ての場合は-3ではなく−4となります。
無限大である場合
add()メソッドに要素数以上のインデックスを指定してみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// 小数点以下の切り捨てを行う public class Main { public static void main(String[] args) throws Exception { double[] values3 = {Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY}; for (double val : values3) { // 小数点以下の切り捨てをする System.out.println( val + "の端数切り捨て結果⇒ " + Math.floor(val)); // int型にキャストする System.out.println( val + "をint型にキャスト⇒" + (int) val); System.out.println(); } } } |
出力結果
Infinityの端数切り捨て結果⇒ Infinity
Infinityをint型にキャスト⇒2147483647
-Infinityの端数切り捨て結果⇒ -Infinity
-Infinityをint型にキャスト⇒-2147483648
無限大の場合はそのまま無限大(Infinity)を返します。
NaNである場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// 小数点以下の切り捨てを行う public class Main { public static void main(String[] args) throws Exception { // 小数点以下の切り捨てをする System.out.println( "NaNの端数切り捨て結果⇒ " + Math.floor(Double.NaN)); // int型にキャストする System.out.println( "NaNをint型にキャスト⇒" + (int) Double.NaN); } } |
出力結果
NaNの端数切り捨て結果⇒ NaN
NaNをint型にキャスト⇒0
NaNの場合はそのままNaNを返します。
今回のポイント
floorで小数点以下の切り捨てる
小数点以下の切り上げを行うには「Mathceil]メソッドを使用する
⚫︎ Mathクラスのfloorメソッド小数点以下の値を切り捨てる
(少数点以下の値を削除するのではなく、その値を超えない範囲で最大(正の無限大に近い)の整数値を返す)
⚫︎ floorメソッドのパラメータが正の整数の場合はint型にキャストしたときの値と同じになる
⚫︎ floorメソッドのパラメータが負の整数の場合はint型にキャストしたときの値と異なる
⚫︎ floorメソッドのパラメータが整数、無限大、NaNの場合は整数、無限大、NaNのパラメータをそのまま返す
関連記事
小数点以下の切り上げるceilメソッドについてはこちらをご参考ください。
小数点以下の四捨五入を計算するroundメソッドについてはこちらをご参考ください。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。