在JAVA中读取列表时我们可以使用.contains(BigDecimal.ZERO)吗?

时间:2012-06-12 14:20:55

标签: java contains bigdecimal

在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;

1 个答案:

答案 0 :(得分:9)

出现此问题是因为scale(小数点右边的位数)BigDecimal.ZERO设置为0,而scalezeroDollarValue是4。

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

您可以使用

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

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

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

有关详细信息,请参阅documentation