複製鏈接
請複製以下鏈接發送給好友

math.h

鎖定
math.h一般見於C、C++程序設計,#include 是包含math頭文件的意思, .h是頭文件的擴展名(header file),這一句聲明瞭本程序要用到標準庫中的 math.h文件。math.h頭文件中聲明瞭常用的一些數學運算,比如乘方,開方運算等等。 [1] 
中文名
math.h
外文名
math.h
來    源
C程序設計
意    義
包含math頭文件
作    用
聲明瞭常用的一些數學運算

math.hmath.h概述

math.h頭文件定義了各種數學函數和一個宏。

math.h庫宏

下面是這個庫中定義的唯一的一個宏:
HUGE_VAL
當函數的結果不可以表示為浮點數時。如果是因為結果的幅度太大以致於無法表示,則函數會設置 errno 為 ERANGE 來表示範圍錯誤,並返回一個由宏 HUGE_VAL 或者它的否定(- HUGE_VAL)命名的一個特定的很大的值。
如果結果的幅度太小,則會返回零值。在這種情況下,error 可能會被設置為 ERANGE,也有可能不會被設置為 ERANGE。 [2] 

math.h庫函數

數學函數庫,一些數學計算公式的具體實現是放在math.h裏,具體有: [3] 
1、 三角函數
double sin(double);正弦
double cos(double);餘弦
double tan(double);正切
2 、反三角函數
double asin (double); 結果介於[-PI/2,PI/2]
double acos (double); 結果介於[0,PI]
double atan (double); 反正切(主值),結果介於[-PI/2,PI/2]
double atan2 (double,double); 反正切(整圓值),結果介於[-PI,PI]
3 、雙曲三角函數
double sinh (double);
double cosh (double);
double tanh (double);
4 、指數與對數
double frexp(double value,int *exp);這是一個將value值拆分成小數部分f和(以2為底的)指數部分exp,並返回小數部分f,即f*2^exp。其中f取值在0.5~1.0範圍或者0。
double ldexp(double x,int exp);這個函數剛好跟上面那個frexp函數功能相反,它的返回值是x*2^exp
double modf(double value,double *iptr);拆分value值,返回它的小數部分,iptr指向整數部分。
double log (double); 以e為底的對數
double log10 (double);以10為底的對數
double pow(double x,double y);計算x的y次冪
float powf(float x,float y); 功能與pow一致,只是輸入與輸出皆為單精度浮點數
double exp (double);求取自然數e的冪
double sqrt (double);開平方根
5 、取整
double ceil (double); 取上整,返回不比x小的最小整數
double floor (double); 取下整,返回不比x大的最大整數,即高斯函數[x]
6 、絕對值
double fabs (double);求實型的絕對值
double cabs(struct complex znum);求複數的絕對值
7 、標準化浮點數
double frexp (double f,int *p); 標準化浮點數,f = x * 2^p,已知f求x,p (x介於[0.5,1])
double ldexp (double x,int p); 與frexp相反,已知x,p求f
8 、取整與取餘
double modf (double,double*); 將參數的整數部分通過指針回傳,返回小數部分
double fmod (double,double); 返回兩參數相除的餘數
9 、其他
double hypot(double x,double y);已知直角三角形兩個直角邊長度,求斜邊長度
double ldexp(double x,int exponent);計算x*(2的指數冪)
double poly(double x,int degree,double coeffs []);計算多項式
int matherr(struct exception *e);數學錯誤計算處理程序
source: 《C & C++ Code Capsules》

math.h注意事項

  1. 沒有現成的cot三角函數,可以使用tan(PI/2-x)來實現
  2. double atan2(double y,double x);取值範圍在(PI,PI)之間;這是一個不太常見的函數,主要用來返回y/x的反正切值。
  3. 強調一點,1-3類 傳參都是針對以弧度表示的數值,非角度表示的數值。
  4. 對於一般的對數求解,考慮利用數學上的對數轉換來實現。
  5. 關於fmod:考慮到%只適用與整型數據,這裏提出一個專門針對實型數據的取餘運算的函數。
  6. int rand(void) 用這函數的時候記得要給隨機種子哦,要不得出的不是真正的隨機數.產生隨機種子可以用srand((unsigned int)time(NULL));這就是由時間產生的隨機種子了。
  7. 在gcc中,需要使用-lm鏈接math庫文件方可使用。

math.hmath.h的內容

此文件為Visual Studio 2019中Include\10.0.18362.0\ucrt\目錄下math.h的內容。
#include <corecrt_math.h>
#ifdef _USE_MATH_DEFINES
#include <corecrt_math_defines.h>
#endif

參考資料
  • 1.    陳鋭,華慶一,耿國華.最新C/C++函數與算法速查速用大辭典:中國鐵道出版社,2015.9
  • 2.    譚浩強.C程序設計(第4版):清華大學出版社 ,2010.6
  • 3.    張權.Objective-C函數速查實例手冊 : 人民郵電出版社 ,2014.2