【Java】BigDecimalの比較 | 和歌山のシステム開発のことなら株式会社システムキューブ
2011-02-07 00:21:03

【Java】BigDecimalの比較

テーマ:フジ屋
おはようございます、フジです。
BigDecimalは比較の仕方を間違いやすいので、メモをしておきます。


まず、BigDecimalは参照型なので、「==」では比較できません。
これは基本ですよね。


次に、「java.math.BigDecimal#equals」メソッドです。
これは、2つのBigDecimalオブジェクトの値が等しいか比較するわけですが、
小数点以下の桁数が異なるとfalseとなります。
つまり、「1」と「1.0」では結果はfalseとなってしまいます。


BigDecimal同士の比較には「java.math.BigDecimal#compareTo」メソッドを使用して下さい。
このメソッドを用いた比較では、スケールは無視されるため、
「1」と「1.0」を比較すると結果はtrueです。



さて、BigDecimalを文字列と比較するにはどうしましょう?
jdk1.4までは、「java.math.BigDecimal#toString」メソッドで変換し、
比較できていました。


しかし、jdk1.5から仕様が変更されました。
java.math.BigDecimal#toString」メソッドだと、指数表記 になってしまうとのことです。

java.math.BigDecimal#toPlainString」メソッドを使用すると、
指数表記なしで文字列変換が可能ですので通常はこちらを使うことが多いでしょう。



まとめ
・BigDecimal同士の比較
  ⇒ 「java.math.BigDecimal#compareTo」メソッド

・BigDecimalと文字列を比較
  ⇒ 「java.math.BigDecimal#toPlainString」メソッドで変換し、比較。

AD