1. 程式人生 > 實用技巧 >PHP數字處理函式

PHP數字處理函式

一、常用函式說明:

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 <= (值) &lg;= PI)
參考 acos() atan() asin()

base_convert
轉換數字的進位方式。
語法: string base_convert(string number, int frombase, int tobase);
返回值: 字串
函式種類: 數學運算
內容說明: 本函式將數字字串 number 從以 frombase 進位轉換到以 tobase 進位。本式能夠處理的由以二進位到以三十六進位之間的進位方式。在十進位之前都是以數字表示,而在超過十進位之後就用英文字母表示。例如十六進位個位數依序為 123456789abcdef,10 的順序是第十七個,這時才進一位。而三十六進位 a 是第十個、b 為第十一個、z 為第三十六個、10 是第三十七個,這時才進位。

使用範例

本例將十六進位字串轉成二進位字串

1 2 3 4 <?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。

1 2 3 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。

1 2 3 4 <?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 值最好也是隨機出現的數字,例如利用加入時間做為變數的來源就是不錯的方法,或者開發其它的硬體周邊介面可取得更好的亂數。

使用範例

本例加入時間的因素,以執行時的百萬分之一秒當亂數種子

1 2 3 4 5 <?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 為整數部份每三位的分隔符號,預設值是 ","。本函式最特別的地方就是引數數目,最少要有一個,也就是欲格式化的字串;也可以有二個或者四個引數,但不能用三個引數。值得注意的是指定小數點的位數之後的數字直接捨棄,沒有四捨五入的情形。

使用範例

1 2 3 4 5 6 7 8 <?php $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 為冪數。

使用範例

1 2 3 4 <?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 ([[email protected]][email protected][/email] 10-May-1999)。值得注意的是為使隨機數的亂度最大,每次在取隨機數之前最好使用 srand() 以配置新的隨機數種子。
參考: srand() getrandmax() mt_rand() mt_srand() mt_getrandmax()

round
四捨五入。
語法: double round(double val);
返回值: 倍精確數
函式種類: 數學運算
內容說明: 本函式用來將數字小數點後四捨五入。

使用範例

1 2 3 4 5 6 7 8 <?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 值最好也是隨機出現的數字,例如利用加入時間做為變數的來源就是不錯的方法,或者開發其它的硬體周邊介面可取得更好的隨機數。

使用範例

本例加入時間的因素,以執行時的百萬分之一秒當隨機數種子

1 2 3 4 5 <?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()