即判断2个double类型数值近似相等

解决方案 »

  1.   

    一般double类型的有效位在小数点后6~7位!
    要是像果子说的
    “是 3.14 与 3.15 呢,还是 3.141 与 3.142,还是 3.1415 与 3.1416 相等呢?”
    应该可以比较的,
    但是若是后面保留几位不确定,比较结果就难预料了,
    那你可以按楼上的说法“转为固定长度字符串”
    根据字符串来比较就可以了
      

  2.   

    double a = ...;
    double b = ...;
    double eps = 1E-13;if ((a - b) / a <= eps) {
        System.out.println("a equals b");
    }
      

  3.   

    <0.5 floor >0.5 ceil 也算是四舍五入吧
      

  4.   

    Double类的equals方法本身就是依赖于精度近似的.
      

  5.   

    定一个epsilon。
    在这个epsilon前后范围内的都是约等于,超出这个范围的就认为是不相等。
      

  6.   

    可以这样:
    double d1;
    double d2;
    double d3 = d1 - d2;
    //精确到三位小数
    if(d3 <= 0.001)
    {
    ..........
    }
      

  7.   

    absolute it...
    這個方法很基本,以前c中判斷兩個實數是否相等也是用這個方法
      

  8.   

    double d1; 
    double d2; 
    double d3;
    if(d1>=d2)
       d3 = d1 - d2; 
    else
       d3 = d2 - d1; 
    //精确到三位小数 
    if(d3 <= 0.001) 

    .......... 
    }
      

  9.   

    double d1; 
    double d2; 
    double d3 = d1 - d2; 
     
    if(Math.abs(d3)<= 0.001) //具体精确到多少,看你个人而定

    .......... 
    }
      

  10.   

    可以比较两个值的差的绝对值,并把这个结果和一个较小的数比较(根据你需要的的精度设置这个较小的数)
    例如:
    double num1,num2;
        num3 = num1 - num2;
        num = Math.abs(num3);//求绝对值
        ~~~
        Math.abs(num3) < 0.01  // 0.01就是精确到小数点后两位,你可以根据需要用更高的精度