java - 如何检查值是否存在于java中的列表中
问题描述
我想在 TaxList 中匹配这个值 199.04。下面是我的代码
List<BigDecimal> TaxList = new ArrayList<BigDecimal>();
String NetP=driver.findElement(getNetPension).getAttribute("value");
float NetPension = new Float(NetP);
log.info("Value of Net Pension on screen : "+ NetPension);
if(TaxList.contains(NetPension))
{
log.info("Income tax value from the database is matching with the value on the screen");
}
else
{
log.warn("Both the values are different.Net pension is:" +NetPension );
}
我正在控制台中打印 TaxList
[199.04、610.72、122.12、866.52、94.56、143.48、78.28、132.6、12.9、32.03、1797.38、128.14、724.94]。即使值 199.04 存在。它转到其他部分
两者的值不同。净养老金是:199.04
解决方案
当调用 ArrayList 的 contains 方法时,它会equals()
调用所有包含的元素。这里可能发生的情况是 BigDecimal 类的实例与浮点类型的值比较不正确。
在与 BigDecimal 进行比较时,考虑进入contains()
并检查浮点值的作用。另一种可能的解决方案是自己将浮点值转换为 BigDecimal。
推荐阅读
- ruby-on-rails - 不在显示页面而是在索引页面显示项目列表
- java-8 - 设置没有 CSS 的 JavaFX TextField 的文本颜色
- python - WSL2 Docker Flask 容器未连接
- node.js - 打字机。通过日期查询时仅使用日期部分并排除时间戳部分
- c# - 即使数字只有一位小数,也要添加两位小数(C#)
- c++ - image.channels() 在 opencv c++ 中没有正确计算 2 通道 tif 图像
- android - 共享元素转换根本不起作用?
- reactjs - 说明:通常,变量在函数退出时“消失”,但状态变量由 React 保留
- c++ - 在 C++ 中,fgets() 函数不起作用
- linux - gfortran 将 c 库与 conda 链接