在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;
答案 0 :(得分:9)
出现此问题是因为scale
(小数点右边的位数)BigDecimal.ZERO
设置为0,而scale
为zeroDollarValue
是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。