JavaでBigDecimalの比較をする際は注意(compareToとequals)

2021年1月30日

BigDecimalの比較をする際、文字列の比較と同じようにはできないので注意が必要です。

Stringの場合

String a = "aaa";
String b = "aaa";
if (a.equals(b))

これはtrueになります。

BigDecimalの場合

BigDecimal a = new BigDecimal(0);
BigDecimal b = new BigDecimal(0);
if (a.equals(b))

これはtrueになります。

BigDecimal a = new BigDecimal(0);
BigDecimal b = new BigDecimal(0.0);
if (a.equals(b))

これはfalseになります。

equalsを使用すると小数点までは見ないので、BigDecimalの場合は小数点までを考慮してcompareToを使用する必要があります。

BigDecimal a = new BigDecimal(0);
BigDecimal b = new BigDecimal(0.0);
if (a.compareTo(b) == 0)

これはtrueになります。