JavaのBigDecimalクラスsubtractメソッドを徹底解説!初心者向け減算処理ガイド
生徒
「先生、Javaでお金の計算をしていたら引き算の結果がうまく合わないことがあるんです。どうすれば正確に計算できますか?」
先生
「それは浮動小数点の誤差が原因ですね。Javaではjava.math.BigDecimalクラスを使えば、正確な引き算を行えます。引き算にはsubtractメソッドを使うんですよ。」
生徒
「なるほど!普通のマイナス演算子じゃなくて、専用のメソッドを使うんですね。」
先生
「そうです。では具体的に使い方を見てみましょう!」
1. java.mathパッケージとは
Javaのjava.mathパッケージは、高精度な数値演算を提供するためのクラス群を含んでいます。その中でも特に重要なのがBigDecimalです。このクラスを使えば、doubleやfloatでは避けられない誤差を解消できます。金融システムや会計システムなど、正確さが絶対に必要な場面で多用されます。
2. BigDecimalクラスの特徴
BigDecimalは整数部と小数部を正確に扱えるクラスで、桁数の制限なく計算が可能です。例えば「0.1」をdoubleで扱うと誤差が出やすいですが、BigDecimalなら誤差なしで扱えます。コンストラクタに数値を直接渡すよりも、文字列で生成するのが一般的です。これは二進数の変換過程で発生する誤差を避けるためです。
将来を見据えて、+αのスキルを身につけたい方へ
JavaやLinuxを学んでいても、「このままで市場価値は上がるのか」 「キャリアの選択肢を広げたい」と感じる方は少なくありません。
AIを学ぶならアイデミープレミアム3. subtractメソッドとは
subtractメソッドは、BigDecimal同士の引き算を行うためのメソッドです。通常の-演算子では使えないので、必ずメソッドを呼び出す必要があります。これにより桁数が多い計算や小数点を含む計算でも正確に結果が得られます。
4. subtractメソッドの基本的な使い方
実際にサンプルコードで確認してみましょう。
import java.math.BigDecimal;
public class BigDecimalSubtractExample {
public static void main(String[] args) {
BigDecimal num1 = new BigDecimal("100.50");
BigDecimal num2 = new BigDecimal("20.25");
BigDecimal result = num1.subtract(num2);
System.out.println("結果: " + result);
}
}
このコードを実行すると、以下のように正確な結果が得られます。
結果: 80.25
5. マイナスの結果とsubtract
subtractを使うと、結果がマイナスになる場合もそのまま表現できます。例えば小さい数から大きな数を引くと負の数になります。これも正確に扱えるのがBigDecimalの強みです。
BigDecimal a = new BigDecimal("50");
BigDecimal b = new BigDecimal("100");
BigDecimal diff = a.subtract(b);
System.out.println(diff);
-50
6. subtractとスケールの関係
BigDecimalにはスケールという小数点以下の桁数を表す概念があります。引き算を行うと、結果のスケールが自動的に調整されます。例えば「100.500」から「0.50」を引いた場合、結果は「100.000」となり、ゼロを含むスケールが維持されることがあります。見た目の調整をしたい場合はstripTrailingZerosやsetScaleを組み合わせると便利です。
7. subtractメソッドを使うときの注意点
引き算自体は簡単ですが、注意点もあります。まず、nullの値を扱うとNullPointerExceptionが発生しますので必ずチェックしましょう。また、スケールや丸め設定を意識しておかないと、意図しない表示になることがあります。金融システムのように桁数が厳密に決まっている場合は、subtractの後にsetScaleを組み合わせて制御するのがおすすめです。
8. subtractと他の演算メソッドの比較
BigDecimalにはadd(加算)、multiply(乗算)、divide(除算)といった演算メソッドもあります。これらと組み合わせて使うことで、四則演算をすべて正確に扱えます。subtractはその中でも基本中の基本であり、最初に覚えるべきメソッドです。
9. 実務でのsubtractの活用例
実際の業務システムでは、商品の価格から割引額を差し引いたり、残高から支出額を引いたりする場面でsubtractが使われます。例えばECサイトでは「購入金額 − クーポン割引」を計算し、銀行システムでは「残高 − 出金額」を計算するような用途で欠かせません。誤差のない計算を保証することで、信頼性の高いシステムを実現できます。
Java Silver SE17(1Z0-825)の演習量を重視したい人には、 定番の問題集がこちらです。
徹底攻略 Java SE 17 Silver 問題集をAmazonで見る※ Amazonアソシエイト・プログラムを利用しています