開啟章節選單
數學函式
常見在 C++ 內建的 STL 函式庫中有很多好用的數學函式,這些函式可以幫助我們在程式中進行數學運算,比如說:取最大值、取最小值、次方、平方根等等。接下來會介紹幾個常用的數學函式!
min()
- 取最小值
在 <algorithm>
標頭檔中有一個,min()
函式可以傳入兩個變數或是一個陣列(只要是可以比較的型態都可以),並且取出最小的那一個,範例如下:
cout << min(10, 20); // 10 cout << min({10, 20, 30}); // 10
max()
- 取最大值
一樣在 <algorithm>
標頭檔中,這個 max()
和 min()
恰好相反,可以傳入兩個變數或是一個陣列(只要是可以比較的型態都可以),並且取出最大的那一個,範例如下:
cout << max(10, 20); // 20 cout << max({10, 20, 30}); // 30
pow()
- 次方
接下來是 <cmath>
標頭檔中的 pow()
,可以傳入兩個參數 ,計算 的值。第一個參數是底數,第二個參數是指數,兩個參數都是浮點數(若傳入整數會被轉型成浮點數),回傳的結果也是浮點數,範例如下:
cout << pow(2, 5); // 32
sqrt()
- 平方根
<cmath>
標頭檔中的 sqrt()
可以算出一個數字的平方根,也就是 ,範例如下:
cout << sqrt(25); // 5
round()
, floor()
, ceil()
- 小數進位、捨去
<cmath>
標頭檔中有三個函式可以用來處理小數的進位、捨去,這裡的三個函式 round()
, floor()
, ceil()
分別代表:四捨五入、無條件捨去、無條件進位,以上三個函式都是傳入浮點數(float
、double
、long double
都行)並回傳整數。範例如下:
cout << round(3.14) << '\n'; // 3 cout << floor(3.14) << '\n'; // 3 cout << ceil(3.14) << '\n'; // 4
abs()
- 絕對值
<cmath>
標頭檔中的 abs()
傳入一個整數,回傳這個整數的絕對值,範例如下:
cout << abs(-5); // 5
fabs()
- 絕對值(浮點數版本)
<cmath>
標頭檔中的 fabs()
傳入一個浮點數(float
、double
、long double
都行),回傳這個浮點數的絕對值,範例如下:
cout << fabs(-5.5); // 5.5
__lg()
- 二進位對數
這是一個 GCC 編譯器特有的內建函式,它不屬於任何特定標頭檔。__lg()
可以算出一個數字的二進位對數,也就是 。需要傳入一個整數,回傳的結果也是整數,範例如下:
cout << __lg(8); // 3
__gcd()
- 最大公因數
這也是一個 GCC 編譯器特有的內建函式,它不屬於任何特定標頭檔。__gcd()
可以算出兩個數字的最大公因數。需要傳入兩個整數,回傳的結果也是整數,範例如下:
cout << __gcd(10, 20); // 10
sin()
, cos()
, tan()
- 三角函式
<cmath>
標頭檔中的 sin()
, cos()
, tan()
分別代表:正弦、餘弦、正切,這三個函式都是用來計算三角函式的,傳入的參數是弧度(浮點數),回傳的結果也是浮點數,範例如下:
cout << sin(3.14); // 0 cout << cos(3.14); // -1 cout << tan(3.14); // -1.22465e-16
asin()
, acos()
, atan()
- 反三角函式
<cmath>
標頭檔中的 asin()
, acos()
, atan()
分別代表:反正弦、反餘弦、反正切,這三個函式都是用來計算反三角函式的,傳入的參數是弧度(浮點數),回傳的結果也是浮點數,範例如下:
cout << asin(0); // 0 cout << acos(0); // 1.5708 cout << atan(0); // 0
小測驗
以下哪個數學函式可以輸出 4 的平方根?