PHPBCMath函数详解
内容导读
收集整理的这篇技术教程文章主要介绍了PHPBCMath函数详解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3314字,纯文字阅读大概需要5分钟。
内容图文
用 PHP 计算的时候,会遇到高精度数带来的问题。好在 PHP 提供了 BC 系统函数。下面把常用的 BC 函数封装下,做了个简单的示例。【推荐教程:php视频教程】
代码实例:
<?php/** * BC Math 函数示例 * Class BCCalculate */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.com/manual/zh/function.bcscale.php * @param int $scale */ private function setScale($scale = 2) { bcscale($scale); } /** * 2个任意精度数字的加法计算 * http://php.com/manual/zh/function.bcadd.php * @return string */ private function add() { return bcadd($this->leftNumber, $this->rightNumber); } /** * 2个任意精度数字的减法 * http://php.com/manual/zh/function.bcsub.php * @return string */ private function sub() { return bcsub($this->leftNumber, $this->rightNumber); } /** * 2个任意精度数字乘法计算 * http://php.com/manual/zh/function.bcmul.php * @return string */ private function mul() { return bcmul($this->leftNumber, $this->rightNumber); } /** * 2个任意精度的数字除法计算 * http://php.com/manual/zh/function.bcdiv.php * @return string */ private function div() { return bcdiv($this->leftNumber, $this->rightNumber); } /** * 比较两个任意精度的数字 * 相等返回 0 ;左大于右返回 1 ;右大于左返回 -1 * http://php.com/manual/zh/function.bccomp.php * @return int */ private function comp() { return bccomp($this->leftNumber, $this->rightNumber); } /** * 对一个任意精度数字取模 * http://php.com/manual/zh/function.bcmod.php * @return string */ private function mod() { return bcmod($this->leftNumber, $this->rightNumber); } /** * 任意精度数字的乘方 * http://php.com/manual/zh/function.bcpow.php * @return string */ private function pow() { return bcpow($this->leftNumber, $this->rightNumber); } /** * 任意精度数字的二次方根 * http://php.com/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->div());// 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 />';
内容总结
以上是为您收集整理的PHPBCMath函数详解全部内容,希望文章能够帮你解决PHPBCMath函数详解所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。