
「Javaで四捨五入や切り捨て・切り上げをしたい」
今回はこのような悩みを解決していきます。
Javaで四捨五入や切り捨て・切り上げしたい場面は頻繁にあります。
JavaではMathクラスを使って四捨五入する方法とBigDecimalクラスを使う方法の2種類があります。
この記事では2種類のクラスを使って四捨五入する方法について解説します。
Mathクラスを使って四捨五入/切り上げ/切り捨て
まずはMathクラスを使って四捨五入、切り上げ・切り捨てする方法について解説していきます。
Math.roundメソッドで四捨五入
最初に四捨五入する方法です。
Mathクラスを使った四捨五入はroundメソッドを利用することで四捨五入できます。
roundメソッドは小数点第一位で四捨五入をします。
実際のコードで確認してみましょう。
public class RoundHalfUp {
public static void main(String args[]) {
// 四捨五入する値
double num1 = 1.5;
double num2 = 1.4;
double num3 = -3.6;
double num4 = -3.4;
// Mathクラスを使って四捨五入した値を出力
System.out.println(Math.round(num1));
System.out.println(Math.round(num2));
System.out.println(Math.round(num3));
System.out.println(Math.round(num4));
}
}
実行結果
2
1
-4
-3
小数点第二位で四捨五入する
Math.roundメソッドは小数点第一位で四捨五入をします。
もし小数点第二位で四捨五入したい場合は次のような処理をすることで、実装することができます。
- 四捨五入したい値を10倍する
- Math.roundメソッドで四捨五入する
- 取得した値をdoubule型にキャストして10で割る
サンプルで確認してみましょう。
public class RoundHalfUp {
public static void main(String args[]) {
// 四捨五入する値
double before = 1.58;
// 1 10倍する
before = before * 10;
// 2 Math.roundメソッドで四捨五入する
long after = Math.round(before);
// 3 取得した値をdouble型にキャストして10で割る
System.out.println((double)after/10);
}
}
実行結果
1.6
Math.ceilメソッドで切り上げ
次に切り上げするceilメソッドについてサンプルで確認してみましょう。
public class RoundHalfUp {
public static void main(String args[]) {
// 切り上げする値
double num1 = 1.5;
double num2 = 1.4;
double num3 = -3.6;
double num4 = -3.4;
// Mathクラスを使って切り上げした値を出力
System.out.println(Math.ceil(num1));
System.out.println(Math.ceil(num2));
System.out.println(Math.ceil(num3));
System.out.println(Math.ceil(num4));
}
}
実行結果
2.0
2.0
-3.0
-3.0
Math.floorメソッドで切り捨て
最後に切り捨てする方法についてサンプルを確認してみましょう。
public class RoundHalfUp {
public static void main(String args[]) {
// 切り捨てする値
double num1 = 1.5;
double num2 = 1.4;
double num3 = -3.6;
double num4 = -3.4;
// Mathクラスを使って切り捨てした値を出力
System.out.println(Math.floor(num1));
System.out.println(Math.floor(num2));
System.out.println(Math.floor(num3));
System.out.println(Math.floor(num4));
}
}
実行結果
1.0
1.0
-4.0
-4.0
BigDecimalクラスを使って四捨五入/切り上げ/切り捨て
次にBigDecimalクラスを使って四捨五入や切り上げ・切り捨てする方法について解説します。
BigDecimalでは四捨五入もしくは切り上げ・切り捨てしたい値に対してsetScaleメソッドを呼び出すことで実現できます。
setScaleメソッドは引数を2つ取ります。
第一引数には小数点以下のどの位で四捨五入するか渡します。
第二引数に四捨五入するのか切り上げするのか切り捨てするのかを指定します。
それぞれの方法についてサンプルコードで確認してみます。
RoundingMode.HALF_UPで四捨五入
まずは四捨五入する方法についてサンプルを確認してみましょう。
第一引数で2を渡すと第三位で四捨五入されます。
setScaleメソッドの第二引数に「RoundingMode.HALF_UP」を渡すことで四捨五入となります。
import java.math.BigDecimal;
import java.math.RoundingMode;
public class RoundHalfUp {
public static void main(String args[]) {
// 四捨五入する値をBigDecimal型で宣言
BigDecimal before = new BigDecimal(1.655482);
// setScaleメソッドで四捨五入する
BigDecimal after = before.setScale(2, RoundingMode.HALF_UP);
System.out.println(after);
}
}
実行結果
1.66
今回は「RoundingMode.HALF_UP」で四捨五入をする方法を紹介しました。
以前は「BigDecimal.ROUND_HALF_UP」が使われていましたが、こちらはJava9から非推奨になりました。
今後は「RoundingMode.HALF_UP」を使うようにしましょう。
この後紹介する切り上げや切り捨てに関しても、BigDecimalクラスではなくRoundingModeの値を使うようにしましょう。
RoundingMode.UPで切り上げ
続いて切り上げをする方法について紹介します。
切り上げをする場合は「RoundingMode.UP」をsetScaleメソッドの第二引数で指定することで実装できます。
import java.math.BigDecimal;
import java.math.RoundingMode;
public class RoundHalfUp {
public static void main(String args[]) {
// 四捨五入する値をBigDecimal型で宣言
BigDecimal before = new BigDecimal(1.653482);
// setScaleメソッドで切り上げする
BigDecimal after = before.setScale(2, RoundingMode.UP);
System.out.println(after);
}
}
実行結果
1.66
RoundingMode.DOWNで切り捨て
切り捨てする場合はRoundingMode.DOWNを渡すことで切り捨てすることができます。
import java.math.BigDecimal;
import java.math.RoundingMode;
public class RoundHalfUp {
public static void main(String args[]) {
// 切り捨てBigDecimal型で宣言
BigDecimal before = new BigDecimal(1.653482);
// setScaleメソッドで切り捨てする
BigDecimal after = before.setScale(2, RoundingMode.DOWN);
System.out.println(after);
}
}
実行結果
1.65
今回はJavaで四捨五入や切り上げ・切り捨てする方法について解説しました。
JavaではMathクラスのメソッドを使って四捨五入や切り上げ切り捨てをする方法とBigDecimalクラスのオブジェクトに対してsetScaleメソッドを使うことで実装する方法の2種類の方法があります。
プログラミング学習はUdemyがおすすめ
私はプログラミングの学習はUdemyで行うのが一番おすすめです。
Udemyでは動画講座でプログラミングなどのスキルを身につけることができます。
現役エンジニアがUdemyをオススメする理由は
・動画で好きなときに学べる
・一流の講師に学ぶことができる
・講師の方に質問ができる
・返金保証もある
・セールを頻繁に開催している
といったたくさんの理由があります。
現在Udemyではセールを開催しています!
通常時1万円から2万円前後の価格で講座が販売されていますが、セール時には1500円前後(ランチ代くらい)で一つの講座を購入することができます。
UdemyにはサーブレットでWebアプリ開発が学べる講座もあるので、JavaでWebアプリ開発する方法を学んでみたい!という方は今がチャンスです!
独学が不安な人へ
独学で学んでいく意志がある方にはUdemyなどで学習するのがおすすめですが、プログラミングを独学するにはそれなりにハードルがあります。
- プログラミングで一度挫折した経験がある
- 一人で学習する自信がないので、サポートが欲しい
という方にはプログラミングスクールを検討してみるのがおすすめです。