上一篇我們介紹了什麼是指標,不曉得大家有沒有比較了解地址的概念?
接下來我們來介紹Math函式庫吧!
還記得在遙遠的第三篇我們有介紹在寫主函式(main function)前,必須先做好一件事就是引入函式庫。
一般來說在程式的開頭,我們就會先把會用到的函式庫(工具包)引入,我們那時候形容函式庫像是匯集了很多函式(工具)的工具包,而我們每次寫程式都會引入的「#include <stdio.h>」就是很好的例子,因為「stdio.h」函式庫包含了我們很常使用到的printf和scanf,往後也會提到別的函式。
至於「stdio.h」函式庫具體包含了什麼樣的函式,我們可以參考下面這個連結:
<stdio.h> - C語言標準庫(gitbook)
既然大概有了函式庫的概念,我們接下來要提一下也很好用的函式庫--「<math.h>」。
<math.h>是一個包含了許多數學常用計算的函式庫,這個函式庫的函式基本是以double的資料型態運算與返值,諸如常見的次方計算、log運算、平方根、絕對值、三角函數、自然對數運算,這些都可以在<math.h>中找到對應函式來協助處理,其中也有數學中常應用的常數也被定義。
接下來我們來介紹<math.h>包含的內容:
定義的變數名稱 | 代表運算式 | 數值 |
---|---|---|
M_E | e | 2.71828182845904523536 |
M_LOG2E | log2(e) | 1.44269504088896340736 |
M_LOG10E | log10(e) | 0.434294481903251827651 |
M_LN2 | ln(2) | 0.693147180559945309417 |
M_LN10 | ln(10) | 2.30258509299404568402 |
M_PI | pi | 3.14159265358979323846 |
M_PI_2 | pi/2 | 1.57079632679489661923 |
M_PI_4 | pi/4 | 0.785398163397448309616 |
M_1_PI | 1/pi | 0.318309886183790671538 |
M_2_PI | 2/pi | 0.636619772367581343076 |
M_2_SQRTPI | 2/sqrt(pi) | 1.12837916709551257390 |
M_SQRT2 | sqrt(2) | 1.41421356237309504880 |
M_SQRT1_2 | 1/sqrt(2) | 0.707106781186547524401 |
(2) 實際應用
a. 直接使用
#include <stdio.h>
#include <math.h>
int main(){
printf("M_PI: %f\n", M_PI);
printf("M_E: %f\n", M_E);
return 0;
}
b. 用變數儲存使用
#include <stdio.h>
#include <math.h>
#define pi M_PI
int main(){
double e = M_E;
printf("pi: %f\n", pi);
printf("e: %f\n", e);
return 0;
}
函式 | 用法 |
---|---|
double pow(double x, double y) | 回傳x的y次方值。 |
double exp(double x) | 傳回e的x次方值。 |
double sqrt(double x) | 回傳x的平方根值。 |
double fabs(double x) | 回傳x的絕對值。 |
double ceil(double x) | 回傳大於或等於x的最小整数值。 |
double floor(double x) | 回傳小於或等於x的最大整數值。 |
double fmod(double x, double y) | 回傳x除以y的餘數值。 |
double log(double x) | 回傳x的自然對數值(基數為e)。 |
double log10(double x) | 返回 x 的常用對數值(基數為10)。 |
double sin(double x) | 返回弧度角x的sin值。 |
double cos(double x) | 返回弧度角x的cos值。 |
double tan(double x) | 返回弧度角x的tan值。 |
double asin(double x) | 返回x弧度的sin^(-1)值。 |
double acos(double x) | 返回x弧度的cos^(-1)值。 |
double atan(double x) | 返回x弧度的tan^(-1)值。 |
(2) 實際應用
#include <stdio.h>
#include <math.h>
#define pi M_PI
int main(){
printf("pow: %f\n", pow(2,10));
printf("exp: %f\n", exp(1));
printf("sqrt: %f\n", sqrt(100));
printf("fabs: %f\n", fabs(-1.2345));
printf("ceil: %f\n", ceil(1.2345));
printf("fmod: %f\n", fmod(4.92345,1.2));
printf("log: %f\n", log(1));
printf("log10: %f\n", log10(100));
printf("sin: %f\n", sin(pi/2));
printf("cos: %f\n", cos(0));
return 0;
}