GMP是The GNU MP Bignum Library,是一個開源的數學運算庫,它可以用於任意精度的數學運算,包括有符號整數、有理數和浮點數。它本身並沒有精度限制,只取決於機器的硬件情況。
本函數庫能處理的數值范圍只到長整數與倍浮點數的范圍。若要處理超過上述范圍的數值,要使用 bc 高精確度函數庫 。本函數庫定義了圓周率的常量 m_pi 值為 3.14159265358979323846。
函數:
abs: 取得絕對值。 acos: 取得反余弦值。 asin: 取得反正弦值。 atan: 取得反正切值。 atan2: 計算二數的反正切值。 base_convert: 轉換數字的進位方式。 bindec: 二進位轉成十進位。 ceil: 計算大於指定數的最小整數。 cos: 余弦計算。 decbin: 十進位轉二進位。 dechex: 十進位轉十六進位。 decoct: 十進位轉八進位。 exp: 自然對數 e 的次方值。 floor: 計算小於指定數的最大整數。 getrandmax: 隨機數的最大值。 hexdec: 十六進位轉十進位。 log: 自然對數值。 log10: 10 基底的對數值。 max: 取得最大值。 min: 取得最小值。 mt_rand: 取得隨機數值。 mt_srand: 配置隨機數種子。 mt_getrandmax: 隨機數的最大值。 number_format: 格式化數字字符串。 octdec: 八進位轉十進位。 pi: 圓周率。 pow: 次方。 rand: 取得隨機數值。 round: 四舍五入。 sin: 正弦計算。 sqrt: 開平方根。 srand: 配置隨機數種子。 tan: 正切計算。
函數舉例:
abs 取得絕對值。 語法: mixed abs(mixed number); 返回值: 混合類型資料 函數種類: 數學運算 內容說明: 返回參數 number 的絕對值。若 number 是倍精確浮點數,則返回值也是倍浮點數;其它的類型則返回類型為整數。
acos 取得反余弦值。 語法: float acos(float arg); 返回值: 浮點數 函數種類: 數學運算 內容說明: 返回參數 arg 的反余弦值 (arc cosine)。 參考: asin() atan()
asin 取得反正弦值。 語法: float asin(float arg); 返回值: 浮點數 函數種類: 數學運算 內容說明: 返回參數 arg 的反正弦值 (arc sine)。 參考: acos() atan()
atan 取得反正切值。 語法: float atan(float arg); 返回值: 浮點數 函數種類: 數學運算 內容說明: 返回參數 arg 的反正切值 (arc tangent)。 參考: acos() asin()
atan2 計算二數的反正切值。 語法: float atan2(float y, float x); 返回值: 浮點數 函數種類: 數學運算 內容說明: 本函數用來計算二數 y、x 的反正切值,計算結果與 atan() 計算 y/x 類似,但本函數會因 x、y 的正負號影響結果。而本函數的返回值必落在正負的圓周率間 (-pi <= (值) ≶= pi) 參考 acos() atan() asin()
base_convert 轉換數字的進位方式。 語法: string base_convert(string number, int frombase, int tobase); 返回值: 字符串 函數種類: 數學運算 內容說明: 本函數將數字字符串 number 從以 frombase 進位轉換到以 tobase 進位。本式能夠處理的由以二進位到以三十六進位之間的進位方式。在十進位之前都是以數字表示,而在超過十進位之后就用英文字母表示。例如十六進位個位數依序為 123456789abcdef,10 的順序是第十七個,這時才進一位。而三十六進位 a 是第十個、b 為第十一個、z 為第三十六個、10 是第三十七個,這時才進位。 使用范例 本例將十六進位字符串轉成二進位字符串 <?php $binary = base_convert($hexadecimal, 16, 2); echo "十六進位字符串\"$hexadecimal\"轉成二進位為\"$binary\"。"; ?>
bindec 二進位轉成十進位。 語法: int bindec(string binary_string); 返回值: 整數 函數種類: 數學運算 內容說明: 本函數將二進位數字字符串轉成十進位的整數。由於 php 使用 32 位有正負號整數計算,能處理的最大十進位數字為 2147483647,也就是二進位數字的 1111111111111111111111111111111 (31 個 1)。 參考: decbin()
ceil 計算大於指定數的最小整數。 語法: int ceil(float number); 返回值: 整數 函數種類: 數學運算 內容說明: 本函數用來計算比浮點參數 number 大的最小整數。 使用范例 本例返回值為 4。 <?php $nextint=ceil(3.14); echo $nextint; ?> 參考: floor() round()
cos 余弦計算。 語法: float cos(float arg); 返回值: 浮點數 函數種類: 數學運算 內容說明: 本函數計算參數 arg 的余弦值 (cosine)。 參考: sin() tan()
decbin 十進位轉二進位。 語法: string decbin(int number); 返回值: 字符串 函數種類: 數學運算 內容說明: 本函數將十進位數字轉成二進位字符串。由於 php 使用 32 位有正負號整數計算,能處理的最大十進位數字為 2147483647,也就是二進位數字的 1111111111111111111111111111111 (31 個 1)。 參考: bindec()
dechex 十進位轉十六進位。 語法: string dechex(int number); 返回值: 字符串 函數種類: 數學運算 內容說明: 本函數將十進位數字轉成十六進位字符串。由於 php 使用 32 位有正負號整數計算,能處理的最大十進位數字為 2147483647,也就是十六進位數字 7fffffff。 參考: hexdec()
decoct 十進位轉八進位。 語法: string decoct(int number); 返回值: 字符串 函數種類: 數學運算 內容說明: 本函數將十進位數字轉成八進位字符串。由於 php 使用 32 位有正負號整數計算,能處理的最大十進位數字為 2147483647,也就是八進位數字 17777777777。 參考: octdec()
exp 自然對數 e 的次方值。 語法: float exp(float arg); 返回值: 浮點數 函數種類: 數學運算 內容說明: 本函數計算自然對數 (natural logarithm) 的 arg 次方值。 參考: pow() log()
floor 計算小於指定數的最大整數。 語法: int floor(float number); 返回值: 整數 函數種類: 數學運算 內容說明: 本函數用來計算比浮點參數 number 小的最大整數。 使用范例 本例返回值為 3。 <?php $lastint=floor(3.14); echo $lastint; ?> 參考: ceil() round()
getrandmax 亂數的最大值。 語法: int getrandmax(void); 返回值: 整數 函數種類: 數學運算 內容說明: 本函數計算亂數函數 rand() 可能取得的取得的最大亂數值。本函數不需參數。 參考: rand() srand() mt_rand() mt_srand() mt_getrandmax()
hexdec 十六進位轉十進位。 語法: int hexdec(string hex_string); 返回值: 整數 函數種類: 數學運算 內容說明: 本函數將十六進位字符串轉成十進位數字。由於 php 使用 32 位有正負號整數計算,能處理的最大十六進位數字為 7fffffff,也就是十進位數字的 2147483647。 參考: dechex()
log 自然對數值。 語法: float log(float arg); 返回值: 浮點數 函數種類: 數學運算 內容說明: 本函數計算參數 arg 的自然對數 (natural logarithm) 值。
log10 10 基底的對數值。 語法: float log10(float arg); 返回值: 浮點數 函數種類: 數學運算 內容說明: 本函數計算參數 arg 的 10 基底對數值。
max 取得最大值。 語法: mixed max(mixed arg1, mixed arg2 .... mixed argn); 返回值: 混合類型資料 函數種類: 數學運算 內容說明: 本函數計算參數間的最大值。若第一個參數是數字數組,則會找出該數組的最大數字。若第一個參數非數組,則需二個以上的參數。這些數字可以是整數、倍精確數或數字字符串的類型。參數的數目不限,視用戶的需求而定。在計算時,只要有一個參數是倍精確數,本函數會將所有的參數都轉成倍精確數,並返回倍精確數。若參數只有整數及數字字符串,則會將所有的參數轉換成整數,並返回整數。 參考: min()
min 取得最小值。 語法: mixed min(mixed arg1, mixed arg2 .... mixed argn); 返回值: 混合類型資料 函數種類: 數學運算 內容說明: 本函數計算參數間的最小值。若第一個參數是數字數組,則會找出該數組的最小數字。若第一個參數非數組,則需二個以上的參數。這些數字可以是整數、倍精確數或數字字符串的類型。參數的數目不限,視用戶的需求而定。在計算時,只要有一個參數是倍精確數,本函數會將所有的參數都轉成倍精確數,並返回倍精確數。若參數只有整數及數字字符串,則會將所有的參數轉換成整數,並返回整數。 參考: max()
mt_rand 取得亂數值。 語法: int mt_rand([int min], [int max]); 返回值: 整數 函數種類: 數學運算 內容說明: 本函數不使用一般常用的 libc 來計算亂數值,而是使用計算速度至少快四倍的馬其賽特旋轉 (mersenne twister) 演算法來計算亂數值。有關馬特賽特旋轉演算法可在松本真的 http://www.math.keio.ac.jp/~matumoto/emt.html 找到更多的相關信息,最佳化的原始程序則在 http://www.scp.syr.edu/~marc/hawk/twister.html。若沒有指定亂數的最大及最小范圍,本函數會自動的從 0 到 rand_max 中取一個亂數。若有指定 min 及 max 的參數,則從指定參數中取一個數字,例如 mt_rand(38, 49) 則會從 38 到 49 之間取一個亂數值。治募?注意的是為使亂數的亂度最大,每次在取亂數之前最好使用 mt_srand() 以配置新的亂數種子。 參考: rand() srand() getrandmax() mt_srand() mt_getrandmax()
mt_srand 配置亂數種子。 語法: void mt_srand(int seed); 返回值: 無 函數種類: 數學運算 內容說明: 本函數傳入參數 seed 后,配置亂數的種子。治募?注意的是參數 seed 值最好也是隨機出現的數字,例如利用加入時間做為變量的來源就是不錯的方法,或者開發其它的硬體周邊界面可取得更好的亂數。 使用范例 本例加入時間的因素,以執行時的百萬分之一秒當亂數種子 <?php mt_srand((double)microtime()*1000000); $randval = mt_rand(); echo $randval; ?> 參考: rand() srand() getrandmax() mt_rand() mt_getrandmax()
mt_getrandmax 亂數的最大值。 語法: int mt_getrandmax(void); 返回值: 整數 函數種類: 數學運算 內容說明: 本函數計算亂數函數 mt_rand() 可能取得的取得的最大亂數值。本函數不需參數。 參考: rand() srand() getrandmax() mt_srand() mt_rand()
number_format 格式化數字字符串。 語法: string number_format(float number, int [decimals], string [dec_point], string [thousands_sep]); 返回值: 字符串 函數種類: 數學運算 內容說明: 本函數用來將浮點參數 number 格式化。若沒加參數 decimals 則返回的字符串只要整數部份,加了此參數才依參數指定的小數點位數返回。參數 dec_point 表示小數點的表示方式方法,默認值是 ".",若需要轉換成其它的小數點就可以在這個參數改掉。參數 thousands_sep 為整數部份每三位的分隔符號,默認值是 ","。本函數最特別的地方就是參數數目,最少要有一個,也就是欲格式化的字符串;也可以有二個或者四個參數,但不能用三個參數。治募?注意的是指定小數點的位數之后的數字直接舍棄,沒有四舍五入的情形。 使用范例 <? $short_pi = "3.14159"; $my_pi = number_format($short_pi, 2); echo $my_pi."\n"; // 3.14 $foo = 850017.9021; $new_foo = number_format($foo, 3, ".", " "); echo $new_foo."\n"; // 850 017.902 ?>
octdec 八進位轉十進位。 語法: string decoct(int number); 返回值: 字符串 函數種類: 數學運算 內容說明: 本函數將八進位字符串轉成十進位數字。由於 php 使用 32 位有正負號整數計算,能處理最大的八進位數字為 17777777777,也就是十進位數字的 2147483647。 參考: decoct()
pi 圓周率。 語法: double pi(void); 返回值: 倍精確數 函數種類: 數學運算 內容說明: 本函數返回圓周率。不需輸入參數。
pow 次方。 語法: float pow(float base, float exp); 返回值: 浮點數 函數種類: 數學運算 內容說明: 本函數計算次方值。參數 base 為基底,exp 為冪數。 使用范例 <?php print(pow(2,3)); // 8 print(pow(5,4)); // 625 ?> 參考: log10() exp()
rand 取得隨機數值。 語法: int rand([int min], [int max]); 返回值: 整數 函數種類: 數學運算 內容說明: 本函數用來取得隨機數值。若沒有指定隨機數的最大及最小范圍,本函數會自動的從 0 到 rand_max 中取一個隨機數。若有指定 min 及 max 的參數,則從指定參數中取一個數字。例如 rand(38, 49) 則會從 38 到 49 之間取一個隨機數值,unix 系統包含 49、win32 系統不包含 49 (zkimmel@earthlink.net 10-may-1999)。值得注意的是為使隨機數的亂度最大,每次在取隨機數之前最好使用 srand() 以配置新的隨機數種子。 參考: srand() getrandmax() mt_rand() mt_srand() mt_getrandmax()
round 四舍五入。 語法: double round(double val); 返回值: 倍精確數 函數種類: 數學運算 內容說明: 本函數用來將數字小數點后四舍五入。 使用范例 <?php $foo1 = round(3.4); $foo2 = round(3.5); $foo3 = round(3.6); echo "round(3.4): ".$foo1."<br>\n"; echo "round(3.5): ".$foo2."<br>\n"; echo "round(3.6): ".$foo3; ?>
參考: ceil() floor()
sin 正弦計算。 語法: float sin(float arg); 返回值: 浮點數 函數種類: 數學運算 內容說明: 本函數計算參數 arg 的正弦值 (sine)。 參考: cos() tan()
sqrt 開平方根。 語法: float sqrt(float arg); 返回值: 浮點數 函數種類: 數學運算 內容說明: 本函數將參數 arg 開平方根。
srand 配置隨機數種子。 語法: void srand(int seed); 返回值: 無 函數種類: 數學運算 內容說明: 本函數傳入參數 seed 后,配置隨機數的種子。值得注意的是參數 seed 值最好也是隨機出現的數字,例如利用加入時間做為變量的來源就是不錯的方法,或者開發其它的硬體周邊界面可取得更好的隨機數。 使用范例 本例加入時間的因素,以執行時的百萬分之一秒當隨機數種子 <?php srand((double)microtime()*1000000); $randval = rand(); echo $randval; ?> 參考: rand() getrandmax() mt_srand() mt_rand() mt_getrandmax()
tan 正切計算。 語法: float tan(float arg); 返回值: 浮點數 函數種類: 數學運算 內容說明: 本函數計算參數 arg 的正切值 (tangent)。 參考: sin() cos()