注意long型后面得加上l或者L
如 long mask = 0xffffffff 结果是mask = -1 因为0xffffffff 先为int 型 然后再由int 转换成long 型。
正确的应为 long mask = 0xffffffffL
范例(用于将两个分开的整型转换成long 再变成double ,PREC_MULTIPLY表示一个除数):
public static double recoverAltiOrLongi(int h,int l){
long t1= h;
t1 = t1<<32;
long t2 = l;
long mask = 0xffffffffL; //注意得加上L
long t3 = t2 & mask;
double r = (double)(t3+t1) /PREC_MULTIPLY;
return r;
}