就是说两个float型的数据相加,其结果可能不是正确的结果,而是一个很接近正确值的结果

解决方案 »

  1.   

    Round a double
    JDK1.0.2 public class divers {
      public static void main(String args[]){
        divers d = new divers();
        d.testRound();
        }  public void testRound(){
        double r = round(3.1537, 2); 
        System.out.println(r); // output is 3.15
        }  double round(double value, int decimalPlace) {
        double power_of_ten = 1;
        while (decimalPlace-- > 0)
           power_of_ten *= 10.0;
        return Math.round(value * power_of_ten) 
           / power_of_ten;
        }
      }
     
    JDK1.1 import java.math.*;public class divers {
      public static void main(String args[]){
        divers d = new divers();
        d.testRound();
        }  public void testRound(){
        double r = 3.1537;
        int decimalPlace = 2;
        BigDecimal bd = new BigDecimal(r);
        bd = bd.setScale(decimalPlace,BigDecimal.ROUND_HALF_UP);
        r = bd.doubleValue();
        System.out.println(r); // output is 3.15
        }
      }
     
      

  2.   

    难道只能用四舍五入吗?
    有没有准确的方法,比如用double
      

  3.   

    这不是Float问题,当然也不是java的问题,而是计算机数据存取机制的问题!
      

  4.   

    因为float是近似值
    两个float数你怎么比较都是不相等的
      

  5.   

    用float只能得到近似值
    要想提高精确度,可以用java.math.BigDecimal试试