java BigDecimalで比較する方法 - BigDecimalクラス ホームページ制作 | 墨田区

java BigDecimalで比較する方法 – BigDecimalクラス

LINEで送る
Pocket

javaでBigDecimalを使って比較する方法をご紹介します。
扱いの難しい BigDecimal クラスですが、比較にも注意が必要です。

文字列の比較には、皆さん equals を利用していますよね?
BigDecimal で同じように equals を利用して比較するとハマりますのでご注意ください。
>Java 文字列を比較する方法はこちら




【PR】マジか?!「アレ」してるLINEスタンプっていったい・・・


BigDecimal型を比較するサンプル

BigDecimal 型の性質上、11.0 は別のものです。ここに落とし穴があります。
同じだと思って、equals で比較してしまうと不具合が発生します。実際にサンプルを見てみましょう。

BigDecimal first = new BigDecimal("1");
BigDecimal second = new BigDecimal("1.0");

if ( first.equals(second) )
    System.out.println("true");
else
    System.out.println("false");


結果はこうなります。

false

では、BigDecimal型を正しく比較するためにはどのようにすればいいのでしょうか?
正しい比較の方法としては、compareTo を利用します。これも比較用のメソッドです。

実際にサンプルを見てみましょう。

if ( first.compareTo(second) == 0 )
    System.out.println("true");
else
    System.out.println("false");

結果はこうなります。

true

注意点として、compareTo メソッドの戻り値は必ず 0 と比較する必要があります。
0 と比較することにより比較演算子( <、==、>、>=、!=、<= )の全てが使用できるようになります。
サンプルを見てみましょう。

BigDecimal zero = new BigDecimal("0");
BigDecimal one = new BigDecimal("1");
BigDecimal minus = new BigDecimal("-1");

if ( zero.compareTo(one) < 0 )
    System.out.println("比較演算子[ <  ]: true");

if ( one.compareTo(one) == 0 )
    System.out.println("比較演算子[ == ]: true");

if ( zero.compareTo(minus) > 0 )
    System.out.println("比較演算子[ >  ]: true");

if ( zero.compareTo(minus) >= 0 )
    System.out.println("比較演算子[ >= ]: true");

if ( zero.compareTo(minus) != 0 )
    System.out.println("比較演算子[ != ]: true");

if ( zero.compareTo(one) <= 0 )
    System.out.println("比較演算子[ <= ]: true");

結果はこうなります。

比較演算子[ <  ]: true
比較演算子[ == ]: true
比較演算子[ >  ]: true
比較演算子[ >= ]: true
比較演算子[ != ]: true
比較演算子[ <= ]: true

BigDecimal 型には、BigDecimal.ZEROBigDecimal.ONE も用意されています。

// 0 と等しい場合
if (zero.compareTo(BigDecimal.ZERO) ) == 0
    System.out.println("hogehoge");

こんな感じで比較も可能です。


こちらのページでは、BigDecimal 型で 足し算, 引き算, 掛け算, 割り算そして四捨五入する方法をご紹介しています。合わせてお読みください。
>Java BigDecimal 足し算, 引き算, 掛け算, 割り算そして四捨五入する方法

おつかれさまでした。

LINEで送る
Pocket

この記事がお役に立ちましたら シェア をお願いいたします。

コメントを残す

お名前 (必須)
メールアドレス
(アドレスは公開されません)

コメント(必須)

Trackback URL