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); } }