1. ホーム

[解決済み】JavaでBigDecimal変数==0かどうかを確認する方法は?

2022-04-05 05:51:24

質問

Javaで以下のようなコードを書いています。

BigDecimal price; // assigned elsewhere

if (price.compareTo(new BigDecimal("0.00")) == 0) {
    return true;
}

if条件はどのように書けばよいのでしょうか?

どのように解決するのですか?

使用方法 compareTo(BigDecimal.ZERO) の代わりに equals() :

if (price.compareTo(BigDecimal.ZERO) == 0) // see below

と比較すると BigDecimal 定数 BigDecimal.ZERO を作成する必要がなくなります。 new BigDecimal(0) を実行するたびに

ご参考までに。 BigDecimal も定数を持ちます。 BigDecimal.ONE BigDecimal.TEN をご利用ください。


注意!

を使用できない理由は BigDecimal#equals() というのは 規模 を考慮した。

new BigDecimal("0").equals(BigDecimal.ZERO) // true
new BigDecimal("0.00").equals(BigDecimal.ZERO) // false!

ということで、純粋な数値比較には不向きです。しかし BigDecimal.compareTo() は、比較する際にスケールを考慮しません。

new BigDecimal("0").compareTo(BigDecimal.ZERO) == 0 // true
new BigDecimal("0.00").compareTo(BigDecimal.ZERO) == 0 // true