簡介
c/c++給我們提供了math.h這樣一個頭文件,大部分的數學運算都在個頭文件有所包含。
c++ 11標準的<math>包含了9個大類58個函數。
三角函數-7(Trigonometric)、雙曲線函數-6(Hyperbolic)、指數對數函數-14(Exponential and logarithmic)、冪函數-4(power)、差和伽馬函數-4(Error and gamma)
、舍入和餘項函數-13(Rounding and remainder)、浮點數操作函數-4(Floating-point manipulation)、最大最小函數-3(minimum maximum)、其他函數-3(other funcion)。
本文章是日常項目中用過的函數整理,,希望增加未介紹的函數加進來的可以評論該文章,作者將進一步完善,分享是一種精神,希望將這一件小事,這一個小的頭文件介紹好,感謝每一位讀者和評論者。
一 三角函數
二 雙曲線函數
三 指數對數函數
四 冪函數
五 差和伽馬函數
六 舍入和餘項函數
1. ceil
double ceil (double x); float ceil (float x); long double ceil (long double x); double ceil (T x);ceil函數返回一個不小於參數值得最小的整數,通俗的講是向右取整。
2.floor
double floor (double x); float floor (float x); long double floor (long double x); double floor (T x);floor函數返回一個不大於參數值的最大整數,通俗的激昂是向左取整。
3.trunc
double trunc (double x); float trunc (float x); long double trunc (long double x); double trunc (T x);trunc是向0取整,它爲ceil和floor的取整都滿足不了的情況提供了一個解決方案。
不知道爲什麼沒有向無窮取整。
4.round
double round (double x); float round (float x); long double round (long double x); double round (T x);round返回一個離參數值最近的整數,當有兩個整數距離參數的距離一樣的時候,取遠離0的那一個。
eg.
round(3.5) = 4;
round(-3.5)=-4;
5.fmod
講完了取整函數,就可以講一下這個取餘數的函數fmod。
double fmod (double numer , double denom); float fmod (float numer , float denom); long double fmod (long double numer, long double denom); double fmod (Type1 numer , Type2 denom);
fmod = numer - tquot *denom
tquot是一個向0取整的值,
這樣當numer>0時,tquot*denom<=numer。從而fmod>=0
當numer<0時,tquot*denom>=numer。從而fmod<=0
這樣一來就可以看出,實際上fmod是帶有符號的。
七 浮點數操作函數
八 最大最小函數
1.fdim
double fdim (double x , double y); float fdimf (float x , float y); long double fdiml (long double x, long double y);該函數的返回值大於等於零。
當x>y是,返回x-y,否則返回0。
也是此函數可以表示爲:return x-y>0?x-y:0
2.fmax、fmin
這兩個函數不再介紹了,分別返回兩個數中的大、小的值。
九 其他函數
1. fabs
double fabs (double x); float fabs (float x); long double fabs (long double x); double fabs (T x);這個函數還是很有用的,用到的地方很多。
它返回輸入值得絕對值。
2.abs
這個函數看上去和fabs有一定的淵源。單從名字上來看,少了‘f’的標識。fabs的f是float的意思。
事實就是這樣。abs將返回一個int。也就是對參數取絕對值,然後轉換爲整形。
3.fma
double fma (double x , double y , double z); float fma (float x , float y , float z); long double fma (long double x, long double y, long double z); double fma (Type1 x , Type2 y , Type3 z);這個函數將返回,x*y+z。乍一看上去,我任務這是一個多麼XX的函數,這不是閒着沒事兒幹嗎。
後來又仔細想了想平常所做的數值運算,發現這種形式還真的不少。