解决方案 »

  1.   

    不要用double进行计算用BigDecimal的add来进行+法运算
      

  2.   

    double是浮点数,不精确的,不能用于精确运算,特别是和钱相关的,千万别用double!
      

  3.   

    处理金额?怎么能用double,而且有必要用double吗。。直接int不行吗?
      

  4.   

    更改:                             //计算总金额 
    it = null;;
    countfree=0.0;
    it = list2.iterator();
    while (it.hasNext()) {
    Object[] obj = (Object[]) it.next();
    obj[31] = obj[31]==null ? 0 : obj[31];
    countfree = Util.add(Double.parseDouble(obj[31].toString()), countfree);
    //countfree += Double.parseDouble(obj[31].toString());
    }
    DecimalFormat df = new DecimalFormat("0.00");
    String num = df.format(countfree);
    public static double add(double v1, double v2) {
      BigDecimal b1 = new BigDecimal(Double.toString(v1));
      BigDecimal b2 = new BigDecimal(Double.toString(v2));
      return b1.add(b2).doubleValue();
     }通过Bigdecimal累加后还是不行
      

  5.   

    的确,那用什么好呢
    通常用long比较好,就是你想保留两位小数,可以先乘100,都换成long的整数再运算!
      

  6.   

    有小数位
    用最小币额作单位啊,比如分,int如果范围太小就用long
      

  7.   


    public static BigDecimal add(String s1,String s2){
    BigDecimal d1 = new BigDecimal(s1);
    BigDecimal d2 = new BigDecimal(s2);
    return d1.add(d2);
    }