[code]
//把正数当成负数来弄,避免逼近正数maxvalue产生的麻烦
int[] digits = new int[]{5,3,4,7,9,11};
long limit = -Long.MAX_VALUE;
long result = 0;
int i=0;
result = -digits[i];
for(i=1;i<digits.length;i++){
result *= 10;
result -= digits[i];
}
[/code]
[code]
public Number getnum(){
int[] digits = new int[]{5,3,4,7,9,11};
long limit = -Long.MAX_VALUE;
long result = 0;
int i=0;
result = -digits[i];
for(i=1;i<digits.length;i++){
if(result<limit){//如果result比最小值还小,说明溢出了
return new BigInteger(new String(digits,0,digits.length));
}
result *= 10;
if(result - digits[i]<limit){//运算之后溢出
return new BigInteger(new String(digits,0,digits.length));
}
result -= digits[i];
}
return -result;
}
[/code]
//把正数当成负数来弄,避免逼近正数maxvalue产生的麻烦
int[] digits = new int[]{5,3,4,7,9,11};
long limit = -Long.MAX_VALUE;
long result = 0;
int i=0;
result = -digits[i];
for(i=1;i<digits.length;i++){
result *= 10;
result -= digits[i];
}
[/code]
[code]
public Number getnum(){
int[] digits = new int[]{5,3,4,7,9,11};
long limit = -Long.MAX_VALUE;
long result = 0;
int i=0;
result = -digits[i];
for(i=1;i<digits.length;i++){
if(result<limit){//如果result比最小值还小,说明溢出了
return new BigInteger(new String(digits,0,digits.length));
}
result *= 10;
if(result - digits[i]<limit){//运算之后溢出
return new BigInteger(new String(digits,0,digits.length));
}
result -= digits[i];
}
return -result;
}
[/code]