首页 > 设计 > WEB开发 > 正文

浮点数精确位数

2019-11-02 18:25:20
字体:
来源:转载
供稿:网友

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表