这没有什么不正常的
你也可能得到0.299999999999999999999999999999999double,浮点数就是这样的,保持数学上面的精度即可。~~~~

解决方案 »

  1.   

    试试看:Double d1 = 0.1d; 
      

  2.   

    很正常,我也遇见过,浮点数就这样了前几天就出现一样的情况,插入到数据库中时还报错了,搞得我检查了老半天~~~可以查查API,参照DecimalFormat或BigDecimal进行舍入操作
      

  3.   

    是你输出精度的问题,简单写了个例子你看一下就行了public void test() {
            Double a = 0.1;
            Double b = 0.2;
            BigDecimal _a = new BigDecimal(a.doubleValue());
            BigDecimal _b = new BigDecimal(b.doubleValue());
            System.out.println(_a);
            System.out.println(_b);
            BigDecimal c = _a.add(_b);
            System.out.println(c.floatValue());
            Double _c = a + b;
            System.out.println(c.floatValue());
        }输出:0.1000000000000000055511151231257827021181583404541015625
    0.200000000000000011102230246251565404236316680908203125
    0.3
    0.3
      

  4.   

     System.out.println(c.floatValue());
    你这输出的不是float类型吗,人家不是让你输出double类型吗,你的意思是解决此类问题用数值类型转换