Heim > Backend-Entwicklung > PHP-Tutorial > Anwendungsbeispiel einer Math-Funktion in PHPs BC (Code)

Anwendungsbeispiel einer Math-Funktion in PHPs BC (Code)

不言
Freigeben: 2023-04-04 22:36:01
nach vorne
2040 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit den Anwendungsbeispielen (Code) der Math-Funktion in PHP. Ich hoffe, dass er für Sie hilfreich ist.

Beim Rechnen mit PHP treten Probleme auf, die durch hochpräzise Zahlen verursacht werden. Glücklicherweise stellt PHP BC-Systemfunktionen bereit. Nachfolgend finden Sie ein einfaches Beispiel für die Kapselung häufig verwendeter BC-Funktionen.

Codebeispiel

<?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.net/manual/zh/function.bcscale.php
     * @param int $scale
     */
    private function setScale($scale = 2)
    {
        bcscale($scale);
    }


    /**
     * 2个任意精度数字的加法计算
     * http://php.net/manual/zh/function.bcadd.php
     * @return string
     */
    private function add()
    {
        return bcadd($this->leftNumber, $this->rightNumber);
    }

    /**
     * 2个任意精度数字的减法
     * http://php.net/manual/zh/function.bcsub.php
     * @return string
     */
    private function sub()
    {
        return bcsub($this->leftNumber, $this->rightNumber);
    }

    /**
     * 2个任意精度数字乘法计算
     * http://php.net/manual/zh/function.bcmul.php
     * @return string
     */
    private function mul()
    {
        return bcmul($this->leftNumber, $this->rightNumber);
    }

    /**
     * 2个任意精度的数字除法计算
     * http://php.net/manual/zh/function.bcp.php
     * @return string
     */
    private function p()
    {
        return bcp($this->leftNumber, $this->rightNumber);
    }

    /**
     * 比较两个任意精度的数字
     * 相等返回 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 />';
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonAnwendungsbeispiel einer Math-Funktion in PHPs BC (Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage