原文:
PHP函數參考13-數學擴展 - 9ong
PHP函數參考14-日志擴展seaslog面面觀 - 9ong
數學函數
這些數學函數只處理計算機上的int和float類型范圍內的值。如果需要處理更大的數字,建議查看使用BCmath函數。
- abs — 絕對值
- acos — 反余弦
- acosh — 反雙曲余弦
- asin — 反正弦
- asinh — 反雙曲正弦
- atan2 — 兩個參數的反正切
- atan — 反正切
- atanh — 反雙曲正切
- base_convert — 在任意進制之間轉換數字
- bindec — 二進制轉換為十進制
- ceil — 進一法取整
- cos — 余弦
- cosh — 雙曲余弦
- decbin — 十進制轉換為二進制
- dechex — 十進制轉換為十六進制
- decoct — 十進制轉換為八進制
- deg2rad — 將角度轉換為弧度
- exp — 計算 e 的指數
- expm1 — 返回 exp(number) - 1,甚至當 number 的值接近零也能計算出準確結果
- floor — 舍去法取整
- fmod — 返回除法的浮點數余數
- getrandmax — 顯示隨機數最大的可能值
- hexdec — 十六進制轉換為十進制
- hypot — 計算一直角三角形的斜邊長度
- intdiv — 對除法結果取整
- is_finite — 判斷是否為有限值
- is_infinite — 判斷是否為無限值
- is_nan — 判斷是否為合法數值
- lcg_value — 組合線性同余發生器
- log10 — 以 10 為底的對數
- log1p — 返回 log(1 + number),甚至當 number 的值接近零也能計算出準確結果
- log — 自然對數
- max — 找出最大值
- min — 找出最小值
- mt_getrandmax — 顯示隨機數的最大可能值
- mt_rand — 生成更好的隨機數
- mt_srand — 播下一個更好的隨機數發生器種子
- octdec — 八進制轉換為十進制
- pi — 得到圓周率值
- pow — 指數表達式
- rad2deg — 將弧度數轉換為相應的角度數
- rand — 產生一個隨機整數
- round — 對浮點數進行四舍五入
- sin — 正弦
- sinh — 雙曲正弦
- sqrt — 平方根
- srand — 播下隨機數發生器種子
- tan — 正切
- tanh — 雙曲正切
BCmath函數
對于任意精度的數學,PHP提供了支持用字符串表示的任意大小和精度的數字的二進制計算,最多為2147483647-1(或0x7FFFFFFF-1)。
由于php弱類型語言,浮點數計算并不是非常精確,在存在小數點多,或者和金錢有關的浮點數運算,建議通過BCmath機型比較計算兩個任意精度的數字,否則容易出現錯誤的情況。但如果涉及金錢的數值,建議在設計上考慮盡量不出現小數,比如把單位設置為分,避免出現小數存儲與計算。
- bcadd — 2個任意精度數字的加法計算
- bccomp — 比較兩個任意精度的數字
- bcdiv — 2個任意精度的數字除法計算
- bcmod — 對一個任意精度數字取模
- bcmul — 2個任意精度數字乘法計算
- bcpow — 任意精度數字的乘方
- bcpowmod — Raise an arbitrary precision number to another, reduced by a specified modulus
- bcscale — 設置所有bc數學函數的默認小數點保留位數
- bcsqrt — 任意精度數字的二次方根
- bcsub — 2個任意精度數字的減法
BCmath函數都是簡單的加減乘除、平方根、取模、乘方,支持任意精度的計算,函數最后一個參數scale,此可選參數用于設置結果中小數點后的小數位數。也可通過使用 bcscale() 來設置全局默認的小數位數,用于所有函數。如果未設置,則默認為 0。
$a = '1.234';
$b = '5';
echo bcsub($a, $b); // -3
echo bcsub($a, $b, 4); // -3.7660