用 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教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答