我正在Java中實現pow函數,我想知道我們如何處理Integer.MIN_VALUE作爲指數?我們只是把它當作一種特殊情況嗎?以Integer.MIN_VALUE作爲指數的Java pow實現
因爲我試圖將結果與標準的Java.lang.Math API進行比較,我得到了幾個不同的結果。以下是比較
//this will print "1.0 vs 0.0"
System.out.println(pow(2,Integer.MIN_VALUE) + " vs " + Math.pow(2,Integer.MIN_VALUE));
//this will print "1.0 vs 1.0"
System.out.println(pow(1,Integer.MIN_VALUE) + " vs " + Math.pow(1,Integer.MIN_VALUE));
public double pow(double base, int exp){
double result = 1.0;
boolean pos = false;
if(exp == 0) return result;
if(exp > 0){
pos = true;
exp *= -1;
}
while(exp > 0){
if((exp & 1) == 1){
result *= base;
}
base *= base;
exp /= 2;
}
if(!pos){
result = 1/result;
}
return result;
}
,所以我想知道如果Integer.MIN_VALUE的是我必須有一個if語句來檢查它的特殊情況列表。
if(exp == Integer.MIN_VALUE && base > 1) return 0.0;
這真的取決於你已經註釋掉實施... –
它只是把代碼回 – peter
'(-1)* Integer.MIN_VALUE的==整數.MIN_VALUE'。所以在這種情況下,你的'while'循環不會運行。 –