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

解决方案 »

  1.   

    UP一下,没用过,可能format只是单纯的截掉吧(可能啊,我也不清楚),你可以在format之前先四舍五入1下
      Math.round(b);   
      好像是这个函数吧(四舍五入)
      

  2.   

    format可以四舍五入
    是因为double类型本身不能做精确计算
      

  3.   

    BigDecimal number = new BigDecimal("50.545");
    System.out.println(number.setScale(2, BigDecimal.ROUND_HALF_UP));
      

  4.   

    /**
     * 
     * @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();
    }
      

  5.   

    由于double不能精确表示吧
    0.545可能是0.5449999999之类的表示了