浮点数精确位数


用浮点数时候,经常会遇到相加得到的结果如下: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");
    	}
        
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值