在购物车(ShoppingCart)中计算物品的总价格时遇到一个问题
定义了一个购物车:
public class ShoppingCart{
HashMap items=null;
int numberOfItems=0;
public ShoppingCart(){
items=new HashMap();
}
...
public synchroized double getTotal(){
double amount=0.0;
for(Iterator i=getItems().iterator();i.hasNext();){
ShoppingCartItem item=(ShoppingCartItem)i.next();
BookDetails bookDetails=(BookDetails)item.getItem();
amount+=(item.getQuantity()*bookDetails.getPrice());
}
return roundOff(amount);
}
private double roundOff(double x){
long val=Math.round(x*100);
return val/100;
}
...
}
不大明白roundOff方法的功能.*100,再/100,这样做有什么道理呢?是为了解决误差吗?查了一下手册,Math.round(double arg)返回最接近arg的long型值.