(1)0.01-99.99:在毫位上四舍五入,保留两位小数,如10.235元,处理为10.24元;10.231元,处理为10.23元。
(2)100.00-999.99:在分位上四舍五入,保留2位小数,分位上变为0。如100.35元,处理为100.40元;100.21元,处理为100.20元;100.95元,处理为101.00。
(3)1000.00以上:在角位上四舍五入,保留两位小数,分位上变为0。如1000.98元,处理为1001.00元;1000.42元,处理为1000.00元。
通过输入数值判断四舍五入的位置
if( num>0&&num<100){
num = Math.round(num*100)/100;//毫位
}else if( num>=100&&num<1000){
num = Math.round(num*10)/10;//分位
}else if( num>1000){
num = Math.round(num);//角位
}
//保留两位小数
DecimalFormat df = new DecimalFormat("#.00");
return df.format(num);
double f = 111231.5585;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, RoundingMode.HALF_UP).doubleValue();
使用BigDecimal ,并且采用setScale方法来设置精确度,同时使用RoundingMode.HALF_UP表示使用最近数字舍入法则来近似计算。在这里我们可以看出BigDecimal和四舍五入是绝妙的搭配。
详细教程 http://www.cnblogs.com/chenssy/p/3366632.html
方法其实写一个就够了
//money表示要四舍五入的数,i表示在第几位四舍五入
public Double returnMoney(Double money,int i){
BigDecimal b = new BigDecimal(money);
double f1 = b.setScale(i, RoundingMode.HALF_UP).doubleValue();
}
public static void main(String[] args){
Double money =;(前面的钱啊什么的我都不写了,主要是判断)
if(0.01 < money<99.99){
money = returnMoney(money,2);
}
.......(省略其他)
if(money < 0 ){
System.out.print("输入错误!")
}
}