double,就是这样的德行,要格式化输出

解决方案 »

  1.   

    double是2进制的所有在计算的时候用误差。将a换为bigdecimal就可以解决这个问题。或者利用11. /**
     * 将一个double型的进行四舍五入(小数点后两位)
     * @param i
     * @return
     */
    public static double moneyTran(double i) {
    if (i >= 0.0D)
    i += 9.9999999999999995E-008D;
    else
    i -= 9.9999999999999995E-008D;
    String str = (new DecimalFormat("################.##")).format(i);
    i = Double.parseDouble(str);
    return i;
    }
    这个程序进行舍入。后结果也会是正确的