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,小数点右侧的位数 ofBigDecimal.ZERO设置为 0,而scaleof设置zeroDollarValue为 4。

equals 方法BigDecimal比较比例和值 - 如果两者不同,则返回 false。

您可能可以使用

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

假设您所有的价格都精确到小数点后四位。如果没有,您可能必须使用

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

有关详细信息,请参阅文档

于 2012-06-12T14:27:12.653 回答