5

JAVA でリストを読み取るときに .contains(BigDecimal.ZERO) を使用できますか??

やっています:

    if (selectPriceList.contains(BigDecimal.ZERO)) {
        return true;
    }
    return false;

しかし、それは常に false を返します。

これは機能しているように見えますが、修正が必要ですか?

    BigDecimal zeroDollarValue = new BigDecimal("0.0000");
    if (selectPriceList.contains(zeroDollarValue)) {
        return true;
    }
    return false;
4

1 に答える 1

9

この問題scaleは、小数点以下の桁数であるBigDecimal.ZEROが 0 に設定されているのに対し、scalezeroDollarValue4 であるために発生します。

equals メソッドはBigDecimal、スケールと値の両方を比較します。どちらかが異なる場合は、false を返します。

あなたはおそらく使用することができます

return selectPriceList.contains(BigDecimal.ZERO.setScale(4));

すべての価格が小数点以下 4 桁になると仮定します。そうでない場合は、使用する必要があるかもしれません

for(BigDecimal bd : selectPriceList) {
    if(bd.compareTo(BigDecimal.ZERO) == 0) {
        return true;
    }
}
return false;

詳細については、ドキュメントを参照してください。

于 2012-06-12T14:27:12.653 に答える