以下代码,运行结果如下。
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);
}
}