日期:2014-05-20  浏览次数:20658 次

一个四舍五入精度的问题
我要将一个数字保留两位小数,四舍五入,用科学记数发展示,程序如下
        double   number   =   Double.parseDouble(50.545);
        DecimalFormat   formatter   =   new   DecimalFormat( ",##0.00 ");
        String   convert   =   formatter.format(number);
按理说结果应该是50.55,但得到的结果确实50.54,不知道是什么原因,是那个地方的精度出现了问题,望大侠指点一下,谢谢!

------解决方案--------------------
BigDecimal number = new BigDecimal( "50.545 ");
System.out.println(number.setScale(2, BigDecimal.ROUND_HALF_UP));

------解决方案--------------------
/**
*
* @param value 要四舍五入的值
* @param scale 小数点后要取的位数
* @return
*/
public static double round(double value,int scale){
BigDecimal bd=new BigDecimal(value);
BigDecimal divisor=new BigDecimal(1);
BigDecimal returnValue=bd.divide(divisor, scale,BigDecimal.ROUND_HALF_UP );
return returnValue.doubleValue();
}