double精度问题, 用Bigdecimal.

解决方案 »

  1.   

    Double  d1,d2,d3,d4,d5;
        d1 = new Double(2000000);
        d2 = new Double(-4611342.65);
        d3 = new Double(6084240.43);
        d4 = new Double(1399258.77);
        d5 = new Double(4872156.55);
        Double d0 = new Double(d1.doubleValue()+d2.doubleValue()+d3.doubleValue()+
                               d4.doubleValue());
       if(d0.equals(d5))
       {
         System.out.println(d0.doubleValue());
         System.out.println("NO ==");
       }
       else
         System.out.println("==");
      }
      

  2.   

    多谢了以上各位兄弟,由于业务上要求对精度要求不是很严格
    偶采用了Math.abs(d1-d2)方法来比较是否相等,暂时能够满足需求了。
      

  3.   

    本来浮点数就有一个精确位的概念
    计算机又不是人脑,浮点数比较当然有误差了应该用 (d1+d2+d3+d4) - d5 的精确度来比较