用浮点数时候,经常会遇到相加得到的结果如下:3.00000001这样的结果
如果用BigDecimal就可以解决这种问题。
代码如下:
-------浮点数,容易出现很大的数字的不精确,我们用BigDecimal来代替
/**
* rev
* @param event
*/
public void recTotalCost(ActionEvent event){
this.cleanErrorMsg();
BigDecimal b1 = new BigDecimal(Double.toString(0.0)); //total
BigDecimal b2 = new BigDecimal(Double.toString(0.0)); //unitCost
BigDecimal b3 = new BigDecimal(Integer.toString(0)); //recQty
PoDetail item = null;
if(availablePoDetailList!=null&&!availablePoDetailList.isEmpty()){
for (int i = 0; i < availablePoDetailList.size(); i++) {
item = availablePoDetailList.get(i);
if(item.getActiveFlag()!=null&&item.getActiveFlag().equals("Y")){
b2 = new BigDecimal(Double.toString(item.getUnitCost()!=null?item.getUnitCost():0.0));
if( item.getRecQty()!=null && item.getRecQty()>0){
int recQty = item.getRecQty();
b3 = new BigDecimal(Integer.toString(recQty));
b1 = b1.add(b2.multiply(b3));
}
}
}
this.poItem.setRevTotalCost(b1.doubleValue());
msg.sendInfoMSG("");
}else{
msg.sendErrorMSG("NO data");
}
}