カテゴリ: Java 更新日: 2026/01/21

JavaのBigDecimalクラスsubtractメソッドを徹底解説!初心者向け減算処理ガイド

BigDecimalのsubtractメソッド
BigDecimalのsubtractメソッド

先生と生徒の会話形式で理解しよう

生徒

「先生、Javaでお金の計算をしていたら引き算の結果がうまく合わないことがあるんです。どうすれば正確に計算できますか?」

先生

「それは浮動小数点の誤差が原因ですね。Javaではjava.math.BigDecimalクラスを使えば、正確な引き算を行えます。引き算にはsubtractメソッドを使うんですよ。」

生徒

「なるほど!普通のマイナス演算子じゃなくて、専用のメソッドを使うんですね。」

先生

「そうです。では具体的に使い方を見てみましょう!」

1. java.mathパッケージとは

1. java.mathパッケージとは
1. java.mathパッケージとは

Javaのjava.mathパッケージは、高精度な数値演算を提供するためのクラス群を含んでいます。その中でも特に重要なのがBigDecimalです。このクラスを使えば、doublefloatでは避けられない誤差を解消できます。金融システムや会計システムなど、正確さが絶対に必要な場面で多用されます。

2. BigDecimalクラスの特徴

2. BigDecimalクラスの特徴
2. BigDecimalクラスの特徴

BigDecimalは整数部と小数部を正確に扱えるクラスで、桁数の制限なく計算が可能です。例えば「0.1」をdoubleで扱うと誤差が出やすいですが、BigDecimalなら誤差なしで扱えます。コンストラクタに数値を直接渡すよりも、文字列で生成するのが一般的です。これは二進数の変換過程で発生する誤差を避けるためです。

3. subtractメソッドとは

3. subtractメソッドとは
3. subtractメソッドとは

subtractメソッドは、BigDecimal同士の引き算を行うためのメソッドです。通常の-演算子では使えないので、必ずメソッドを呼び出す必要があります。これにより桁数が多い計算や小数点を含む計算でも正確に結果が得られます。

4. subtractメソッドの基本的な使い方

4. subtractメソッドの基本的な使い方
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

5. マイナスの結果とsubtract
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とスケールの関係

6. subtractとスケールの関係
6. subtractとスケールの関係

BigDecimalにはスケールという小数点以下の桁数を表す概念があります。引き算を行うと、結果のスケールが自動的に調整されます。例えば「100.500」から「0.50」を引いた場合、結果は「100.000」となり、ゼロを含むスケールが維持されることがあります。見た目の調整をしたい場合はstripTrailingZerossetScaleを組み合わせると便利です。

7. subtractメソッドを使うときの注意点

7. subtractメソッドを使うときの注意点
7. subtractメソッドを使うときの注意点

引き算自体は簡単ですが、注意点もあります。まず、nullの値を扱うとNullPointerExceptionが発生しますので必ずチェックしましょう。また、スケールや丸め設定を意識しておかないと、意図しない表示になることがあります。金融システムのように桁数が厳密に決まっている場合は、subtractの後にsetScaleを組み合わせて制御するのがおすすめです。

8. subtractと他の演算メソッドの比較

8. subtractと他の演算メソッドの比較
8. subtractと他の演算メソッドの比較

BigDecimalにはadd(加算)、multiply(乗算)、divide(除算)といった演算メソッドもあります。これらと組み合わせて使うことで、四則演算をすべて正確に扱えます。subtractはその中でも基本中の基本であり、最初に覚えるべきメソッドです。

9. 実務でのsubtractの活用例

9. 実務でのsubtractの活用例
9. 実務でのsubtractの活用例

実際の業務システムでは、商品の価格から割引額を差し引いたり、残高から支出額を引いたりする場面でsubtractが使われます。例えばECサイトでは「購入金額 − クーポン割引」を計算し、銀行システムでは「残高 − 出金額」を計算するような用途で欠かせません。誤差のない計算を保証することで、信頼性の高いシステムを実現できます。

Javaの基礎を最初から体系的に学びたい人には、 初心者向けで定評のある定番入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

カテゴリの一覧へ
新着記事
New1
Spring
SpringDataJPAのJPAクエリメソッド「StartingWith」の使い方を完全ガイド!初心者向け解説
更新記事
New2
Spring
SpringDataJPAのJPAクエリメソッド「NotLike」の使い方を完全ガイド!初心者向け解説
更新記事
New3
Thymeleaf
Thymeleafのth:style属性を完全ガイド!初心者でもわかる動的スタイルの適用方法
更新記事
New4
Servlet
JavaのPart.getSubmittedFileNameメソッドの使い方を徹底解説!初心者でもわかるファイル名の取得方法
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.3
Java&Spring記事人気No3
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
No.4
Java&Spring記事人気No4
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.5
Java&Spring記事人気No5
Spring
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.6
Java&Spring記事人気No6
Java
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.7
Java&Spring記事人気No7
Spring
SpringのModelクラスの使い方を完全ガイド!初心者でも安心
No.8
Java&Spring記事人気No8
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介

💻 作業効率アップに

長時間のコーディングでも疲れにくい♪ 静音ワイヤレスマウス

Logicool Signature M750 を見る

※ Amazon広告リンク