數值的整數次方(代碼的完整性)

三種錯誤處理的方法:函數

    1) 函數用返回值來告訴調用者是否出錯(return -1;)spa

    2) 當發生錯誤是設置一個全局變量it

    3) 拋出異常    當函數運行出錯時,就拋出一個異常 (try... catch...)。io

Question:實現函數double Power(double base, int exponent), 求base 的 exponent 次方。不得使用庫函數,同時,不須要考慮大數問題。變量

    指數有兩種狀況:正數,負數。還應考慮底數爲零的狀況【由於指數爲負數時,應該考慮求倒數】。方法

 

//判斷兩個 double 類型的數值是否相等
bool equal(double num1, double num2)
{
 if((num1 - num2) < 0.000001 &&
  (num1 - num2) > 0.000001)
  return true;
 else
  return false;
}
異常

double PowerWithUnsignedExponent(double base, unsigned int absExponent)
{
 double result = 1.0;
 for(int i = 1; i <= absExponent; i++)
 {
  result *= base;
 }
 return result;
}
錯誤

double Power(double base, int exponent)
{
 InvalidInput = false;
 //1. 底數爲 0, 指數爲負數的狀況
 if(equal(base, 0.0) && exponent < 0)
 {
  InvalidInput = 0;
  return 0.0;
 }
 //當指數爲負數時,現將其轉換爲正數,而後將結果取倒數
 unsigned int absExponent = (unsigned int) exponent;
 if(exponent < 0)
  absExponent = (unsigned int) (-exponent);
 
 double result = PowerWithUnsignedExponent(base, absExponent);
 if(exponent < 0)
 {
  result = 1 / result;
 }
 return result;
}
return

相關文章
相關標籤/搜索