解决方案 »

  1.   

    float和double都有这问题
    要精确的话最好用Bigdecimal
      

  2.   

    System.out.println(new BigDecimal(15.2%5).floatValue());      
    挺好用
      

  3.   

    System.out.println(new BigDecimal(15.2%5).floatValue());      
    挺好用
    转换成float是变成了0.2,它这样处理数据的原理是什么?求解!!
      

  4.   

    double 和 float两个类型在java中本身就是非精确存储的,再用两个近似值去做计算,得到的结果就只能是一个近似值了。
      

  5.   

    //使用BigDecimal四舍五入保留2位小数
    double val = 15.2 % 5;
    BigDecimal bd = new BigDecimal(val);
    val = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
    System.out.println(val);//打印0.2
      

  6.   

    两个数有一个是double,结果就是double的。
    四舍五入网上太多了,不再赘述。看一下:
    java.math 
    类 BigDecimaljava.lang.Object
      继承者 java.lang.Number
          继承者 java.math.BigDecimal