JavaでBigDecimal同士の比較
BigDecimalオブジェクト同士の大小比較にはcompareToメソッドを使用します。
この時compareToメソッドの戻り値はAPIには、 BigDecimalの値が比較するBigDecimaより小さい場合は-1、等しい場合は0、大きい場合は1 とあります。
ですので、以下のように戻り値を-1や1と比較しがちです。

if(a.compareTo(b) == -1){
    // 処理
}
このように比較すると全ての比較演算子が使用できません。ですのでcompareToメソッドの戻り値は必ず0と比較します。
0と比較することにより比較演算子(<、==、>、>=、!=、<=)の全てが使用できるようになります。
以下は、例です。

import java.math.BigDecimal;

public class BigDecimalTest {

    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("0");
        BigDecimal b = new BigDecimal("1");
        BigDecimal c = new BigDecimal("-1");
        // <、==、>、>=、!=、<= 0と比較
        if(a.compareTo(b) <0){
            System.out.println("正しい");
        }
        if(a.compareTo(c) > 0){
            System.out.println("正しい");
        }
        if(a.compareTo(b) <= 0){
            System.out.println("正しい");
        }
        if(b.compareTo(b) == 0){
            System.out.println("正しい");
        }
        if(a.compareTo(c) >= 0){
            System.out.println("正しい");
        }
        if(a.compareTo(c) != 0){
            System.out.println("正しい");
        }
    }
}
出力結果は以下のようになります。

正しい
正しい
正しい
正しい
正しい
正しい
BigDecimal比較サンプル
以下、サンプルです。

// 0と等しい場合
if(a.compareTo(BigDecimal.ZERO)) = 0{

}

// 1以上(0含まない)
if(a.compareTo(BigDecimal.ZERO)) > 0{

}

// 0以上
if(a.compareTo(BigDecimal.ZERO)) >= 0{

}

Back to top

Information