如题

解决方案 »

  1.   

    double 只有 16 位的精度,而 long 在取值范围内的精度最高有 19 位。
      

  2.   


    public class Main {    /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
            long l1=9223372036854775757L;
            long l2=9223372036854775557L;
            System.out.println(l1);
            System.out.println(l2);
            double d1=l1;
            double d2=l2;
            System.out.println(d1);
            System.out.println(d2);
            if(d1==d2){
                System.out.println("d1==d2");
            }
        }}一个简单的例子,两个数相差200,它们的浮点表示就一致了,也就是说这个范围之内的数用double都无法区分了。
      

  3.   

    Math.ulp(double )
    方法可以说明一些问题。