double a = 1.9;
double b = 0.3;a + b 的值为什么是 2.19999999999997 
而不是 2.2

解决方案 »

  1.   

    double是浮点型精确类型,这个类型申明的变量不代表它真正的值,只是代表最接近的值,不必死扣这些死角,有些东西只要了解就可以了
      

  2.   

    double,float 等浮点数是不准确的,想使用准确的,可以用BigDecimal 或者直接用 int/long 这类整数
      

  3.   

    Double精度就是这样的,你要想得到2.2NumberFormat format = new DecimalFormat("#0.00");
            double a = 1.9;
            double b = 0.3;        double d = Double.valueOf(format.format(a + b));