劍指Offer(書):數值的整數次方
阿新 • • 發佈:2018-08-07
== 浮點 int pow while 註意 ble double amp
題目:給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。
分析:
* 要註意以下幾點:
* 1.冪為負數時,base不能為0,不然求的時候是對0取倒數,會發生除0異常。
* 2.0的0次冪無意義,無特殊說明,一般來說是1。
public double power(double base, int exponent) { if (exponent == 0) { return 1.0; } if (exponent == 1) { return base; } if (Double.compare(base, 0.0) == 0 && exponent < 0) {throw new ArithmeticException(" / by 0"); } int flag = exponent < 0 ? -exponent : exponent; double result = base; while (flag > 1) { result *= result; if ((flag & 1) == 1) { result *= base; } flag = flag >> 1; } return (exponent < 0) ? 1 / result : result; }
劍指Offer(書):數值的整數次方