用 PHP 計算的時候,會遇到高精度數帶來的問題。好在 PHP 提供了 BC 系統函數。下面把常用的 BC 函數封裝下,做了個簡單的示例。
代碼示例?php * BC Math 函數示例 * Class BCCalculatehtml' target='_blank'>class BCCalculate private $leftNumber;// 左操作數 private $rightNumber;// 右操作數 public function __construct($leftNumber, $rightNumber) $this- leftNumber = $leftNumber; $this- rightNumber = $rightNumber; $this- setScale(); * 設置數字 * @param $name * @param $value * @return null public function __set($name, $value) if (!isset($this- $name)) { return null; $this- $name = $value; * 獲取數字 * @param $name * @return null public function __get($name) if (isset($this- $name)) { return $this- $name; } else { return null; * 執行方法 * @param $functionName * @param string $arguments * @return null public function __call($functionName, $arguments) if (!method_exists($this, $functionName)) { return null; // 設置小數點位數需要參數,其他不需要 if (isset($arguments[0])) { return $this- $functionName($arguments[0]); return $this- $functionName(); * 設置所有bc數學函數的默認小數點保留位數 * http://php.net/manual/zh/function.bcscale.php * @param int $scale private function setScale($scale = 2) bcscale($scale); * 相等返回 0 ;左大于右返回 1 ;右大于左返回 -1 * http://php.net/manual/zh/function.bccomp.php * @return int private function comp() return bccomp($this- leftNumber, $this- rightNumber); * 對一個任意精度數字取模 * http://php.net/manual/zh/function.bcmod.php * @return string private function mod() return bcmod($this- leftNumber, $this- rightNumber); * 任意精度數字的乘方 * http://php.net/manual/zh/function.bcpow.php * @return string private function pow() return bcpow($this- leftNumber, $this- rightNumber); * 任意精度數字的二次方根 * http://php.net/manual/zh/function.bcsqrt.php * @return string private function sqrt() return bcsqrt($this- leftNumber);$bc = new BCCalculate(3.45, 5.61);var_dump($bc- leftNumber);// 獲取數字 float(3.45)echo br / $bc- leftNumber = 24.08;var_dump($bc- leftNumber);// 修改數字 float(24.08)echo br / var_dump($bc- add());// 注意返回值是字符串 string(5) 29.69 echo br / $bc- setScale(3);// 修改小數點后位數var_dump($bc- sub());// string(6) 18.470 echo br / var_dump($bc- mul());// string(7) 135.088 echo br / var_dump($bc- p());// string(5) 4.292 echo br / var_dump($bc- comp());// int(1)echo br / $bc- leftNumber = 10;$bc- rightNumber = 4;var_dump($bc- mod());// string(1) 2 echo br / var_dump($bc- pow());// string(5) 10000 echo br / $bc- leftNumber = 16;var_dump($bc- sqrt());// string(5) 4.000 echo br /
以上就是PHP的BC中Math函數的用法示例(代碼)的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答