2015年10月27日火曜日

BigDecimalの落とし穴

BigDecimalの比較をおこなうときは、注意が必要。


        BigDecimal bigA = new BigDecimal(0.00);

        if( bigA == BigDecimal.ZERO )
        {
            System.out.println("bigA=ZERO");
        }
        else
        {
            System.out.println("bigA is not ZERO");
        }


実行結果:bigA is not ZERO

上記の条件式「bigA == BigDecimal.ZERO」は、falseとなります。
「==」演算子で比較をおこなうと、BigDecimalの「0.00」と「0」は、違うものと判断されました。

BigDecimalの値そのものを比較したい場合は、CompareToメソッドを使わなければなりません。

0 件のコメント:

コメントを投稿