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("正しい");
}
}
}
出力結果は以下のようになります。
正しい
正しい
正しい
正しい
正しい
正しい