JavaでBigDecimal変数が0かどうかをチェックするにはどうすればいいですか? 質問する

JavaでBigDecimal変数が0かどうかをチェックするにはどうすればいいですか? 質問する

Java で次のコードがあります。

BigDecimal price; // assigned elsewhere

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

if 条件を記述する最適な方法は何ですか?

ベストアンサー1

使用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

おすすめ記事