JavaでBigDecimalの比較を行う
BigDecimalの値をequalsを使って比較すると思っていた結果と違う結果が返ってくる場合があります。 例えば10.0と10をequalsを使って比較するとfalseが返っています。
上記の例のような0.0と0を比較したいとき、値として同じであると判断してほしいときは compareToを使うと上手く比較することができます。
BigDecimal bi1 = new BigDecimal("0"); BigDecimal bi2 = new BigDecimal("0.0"); if ( bi1.compareTo(bi2) == 0 ){ System.out.println("等しい"); }
compareToは等しいときは0、bi1のほうが大きければ正の数、bi1のほうが小さければ負の数が戻り値として得られるので compareToの戻り値と0を比較することで、BigDecimalの値を比較することができます。