Int的溢出问题

以下代码,运行结果如下。

        
        
        double y =47264;
        double mnm1 = 0.25+ y*y+y-2*94527;
        double mnm2 =  47264*47264-2*94527+47264+0.25;
        double mnm3 =  47264.0*47264-2*94527+47264+0.25;
         
        System.out.println(mnm1);
        System.out.println(mnm2);
        System.out.println(mnm3);
        System.out.println(47264 * 47264);
        System.out.println(47264.0 * 47264);

        

 

 

 主要原因在于,虽然mnm2定义为double 但操作应该是在最后存的时才转为double类型的,因为在计算过程中数字都是Int类型,因此以Int计算的。

这个问题是在我写循环时,直接用了循环变量i计算,导致怎么也找不到出错的地方。再写循环的时候一定要注意!!!

 

    
    static void f1() {//-2.06122338975E9
        for (int y=47264 ;y <47265;y++) {
            double  mmm = 0.25+ y*y+y-2*94527;
            System.out.println(mmm);
        
        }
    }
    
    static void f2() {//2.23374390625E9
        for (int i=47264 ;i<47265;i++) {
            double y =i;
            double  mmm = 0.25+ y*y+y-2*94527;
            System.out.println(mmm);
        }
    }

 

posted @ 2020-09-17 15:54  白清欢  阅读(432)  评论(0编辑  收藏  举报