double为双精度数,0.2d + 0.9d 也不一定就是 1.1d

解决方案 »

  1.   

    计算机在存储小数时,是用浮点数存储的,这点可以到计算机原理的书籍中找到,有时可能表示1.0时,表示为0.99999999或1.00000000012等情况,所以就得不到你所期望的数值了.可以通过Math.round(d*100)/100来得到两位小数的值.
      

  2.   

    public class Test{
      public static void main(String[] args){
        java.math.BigDecimal b = new java.math.BigDecimal("9.1");
        System.out.println(b.multiply(new java.math.BigDecimal("6")).doubleValue());
      }
    }