国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP BC Math 函數(shù)詳解

zqhxuyuan / 2268人閱讀

摘要:導(dǎo)語(yǔ)用計(jì)算的時(shí)候,會(huì)遇到高精度數(shù)帶來(lái)的問(wèn)題。好在提供了系統(tǒng)函數(shù)。下面把常用的函數(shù)封裝下,做了個(gè)簡(jiǎn)單的示例。參考資料魔術(shù)方法任意精度數(shù)學(xué)。

導(dǎo)語(yǔ)

用 PHP 計(jì)算的時(shí)候,會(huì)遇到高精度數(shù)帶來(lái)的問(wèn)題。好在 PHP 提供了 BC 系統(tǒng)函數(shù)。下面把常用的 BC 函數(shù)封裝下,做了個(gè)簡(jiǎn)單的示例。

代碼示例
leftNumber = $leftNumber;
        $this->rightNumber = $rightNumber;
        $this->setScale();
    }

    /**
     * 設(shè)置數(shù)字
     * @param $name
     * @param $value
     * @return null
     */
    public function __set($name, $value)
    {
        if (!isset($this->$name)) {
            return null;
        }

        $this->$name = $value;
    }

    /**
     * 獲取數(shù)字
     * @param $name
     * @return null
     */
    public function __get($name)
    {
        if (isset($this->$name)) {
            return $this->$name;
        } else {
            return null;
        }
    }

    /**
     * 執(zhí)行方法
     * @param $functionName
     * @param string $arguments
     * @return null
     */
    public function __call($functionName, $arguments)
    {
        if (!method_exists($this, $functionName)) {
            return null;
        }

        // 設(shè)置小數(shù)點(diǎn)位數(shù)需要參數(shù),其他不需要
        if (isset($arguments[0])) {
            return $this->$functionName($arguments[0]);
        }

        return $this->$functionName();
    }

    /**
     * 設(shè)置所有bc數(shù)學(xué)函數(shù)的默認(rèn)小數(shù)點(diǎn)保留位數(shù)
     * http://php.net/manual/zh/function.bcscale.php
     * @param int $scale
     */
    private function setScale($scale = 2)
    {
        bcscale($scale);
    }


    /**
     * 2個(gè)任意精度數(shù)字的加法計(jì)算
     * http://php.net/manual/zh/function.bcadd.php
     * @return string
     */
    private function add()
    {
        return bcadd($this->leftNumber, $this->rightNumber);
    }

    /**
     * 2個(gè)任意精度數(shù)字的減法
     * http://php.net/manual/zh/function.bcsub.php
     * @return string
     */
    private function sub()
    {
        return bcsub($this->leftNumber, $this->rightNumber);
    }

    /**
     * 2個(gè)任意精度數(shù)字乘法計(jì)算
     * http://php.net/manual/zh/function.bcmul.php
     * @return string
     */
    private function mul()
    {
        return bcmul($this->leftNumber, $this->rightNumber);
    }

    /**
     * 2個(gè)任意精度的數(shù)字除法計(jì)算
     * http://php.net/manual/zh/function.bcdiv.php
     * @return string
     */
    private function div()
    {
        return bcdiv($this->leftNumber, $this->rightNumber);
    }

    /**
     * 比較兩個(gè)任意精度的數(shù)字
     * 相等返回 0 ;左大于右返回 1 ;右大于左返回 -1
     * http://php.net/manual/zh/function.bccomp.php
     * @return int
     */
    private function comp()
    {
        return bccomp($this->leftNumber, $this->rightNumber);
    }

    /**
     * 對(duì)一個(gè)任意精度數(shù)字取模
     * http://php.net/manual/zh/function.bcmod.php
     * @return string
     */
    private function mod()
    {
        return bcmod($this->leftNumber, $this->rightNumber);
    }

    /**
     * 任意精度數(shù)字的乘方
     * http://php.net/manual/zh/function.bcpow.php
     * @return string
     */
    private function pow()
    {
        return bcpow($this->leftNumber, $this->rightNumber);
    }

    /**
     * 任意精度數(shù)字的二次方根
     * 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);// 獲取數(shù)字 float(3.45)
echo "
"; $bc->leftNumber = 24.08; var_dump($bc->leftNumber);// 修改數(shù)字 float(24.08) echo "
"; var_dump($bc->add());// 注意返回值是字符串 string(5) "29.69" echo "
"; $bc->setScale(3);// 修改小數(shù)點(diǎn)后位數(shù) var_dump($bc->sub());// string(6) "18.470" echo "
"; var_dump($bc->mul());// string(7) "135.088" echo "
"; var_dump($bc->div());// string(5) "4.292" echo "
"; var_dump($bc->comp());// int(1) echo "
"; $bc->leftNumber = 10; $bc->rightNumber = 4; var_dump($bc->mod());// string(1) "2" echo "
"; var_dump($bc->pow());// string(5) "10000" echo "
"; $bc->leftNumber = 16; var_dump($bc->sqrt());// string(5) "4.000" echo "
";
補(bǔ)充

涉及到金額的時(shí)候,可以看上一篇文章。


參考資料:PHP:魔術(shù)方法、BC Math 任意精度數(shù)學(xué)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/30055.html

相關(guān)文章

  • PHP 處理金額

    摘要:導(dǎo)語(yǔ)涉及到金額的代碼,一定要謹(jǐn)慎處理。所幸的是,金額一般不會(huì)有太多的小數(shù)。那么存儲(chǔ)的時(shí)候呢,一言以蔽之,以分為單位進(jìn)行存儲(chǔ)。格式化金額下面是格式化金額的實(shí)例格式化金額參考資料關(guān)于浮點(diǎn)數(shù)你應(yīng)該知道的浮點(diǎn)數(shù)的一個(gè)常見(jiàn)問(wèn)題的解答。 導(dǎo)語(yǔ) 涉及到金額的代碼,一定要謹(jǐn)慎處理。剛好最近做了相關(guān)的功能,下面大概說(shuō)一下。 存儲(chǔ) PHP 的浮點(diǎn)數(shù)是不能精確計(jì)算的,具體的可以看這篇文章。所幸的是,金額一般...

    asce1885 評(píng)論0 收藏0
  • URI編解碼詳解encodeURIComponent、encodeURI

    摘要:可選項(xiàng)目,一般使用隔開(kāi)或隔開(kāi)的鍵值對(duì)可選項(xiàng)目包,其它額外的標(biāo)識(shí)信息和的不同這和長(zhǎng)得也很相似,是的縮寫,譯為統(tǒng)一資源定位符。格式類似協(xié)議主機(jī)名具體地址可能還有參數(shù)這里有三個(gè)概念,統(tǒng)一資源標(biāo)識(shí)符,統(tǒng)一資源定位符,統(tǒng)一資源名稱。 URI URI是Universal Resource Identifier通用資源標(biāo)志符,是一個(gè)用于標(biāo)識(shí)某一互聯(lián)網(wǎng)資源名稱的字符串。 該種標(biāo)識(shí)允許用戶對(duì)任何(包括本...

    Youngdze 評(píng)論0 收藏0
  • 紅皮書(4):引用類型

    摘要:類型類型重排序方法升序降序方法返回從參數(shù)指定位置開(kāi)始到當(dāng)前數(shù)組末尾的所有項(xiàng)。要注意的是,傳遞給構(gòu)造函數(shù)的兩個(gè)參數(shù)都是字符串不能把正則表達(dá)式字面量傳遞給構(gòu)造函數(shù)。由于構(gòu)造函數(shù)的模式參數(shù)是字符串,所以在某些情況下要對(duì)字符串進(jìn)行雙重轉(zhuǎn)義。 Object類型 Array類型 重排序方法: compare 升序: function compare(value1, value2){ ...

    CoorChice 評(píng)論0 收藏0
  • 《JavaScript程序設(shè)計(jì)》 第7章 軟件構(gòu)架

    摘要:軟件工程活動(dòng)開(kāi)發(fā)軟件系統(tǒng)這一任務(wù)包括許多行為。前者要求對(duì)象之間具有特定關(guān)系,而后者是有關(guān)安全程序設(shè)計(jì)的這兩都是大型系統(tǒng)構(gòu)建過(guò)程中的重要組成部分。第一一個(gè)概念層級(jí)結(jié)構(gòu)在本節(jié)后續(xù)部分介紹,后者信息隱藏將在下一節(jié)介紹。 7.1 軟件工程活動(dòng) 開(kāi)發(fā)軟件系統(tǒng)這一任務(wù)包括許多行為。必須為系統(tǒng)制作業(yè)務(wù)案例,必須收集、明確和整理需求,必須設(shè)計(jì)、協(xié)調(diào)、構(gòu)建、測(cè)試、集成、部署和維護(hù)系統(tǒng)本身。軟件工程領(lǐng)域研...

    antz 評(píng)論0 收藏0
  • 關(guān)于PHP精確計(jì)算模塊

    摘要:精確計(jì)算的函數(shù)簡(jiǎn)介是的縮寫。函數(shù)的參數(shù)都是操作數(shù)加上一個(gè)可選的,比如,如果沒(méi)有提供,就用的缺省值。 PHP精確計(jì)算的BC函數(shù) 簡(jiǎn)介:bc是Binary Calculator的縮寫。bc*函數(shù)的參數(shù)都是操作數(shù)加上一個(gè)可選的 [int scale],比如string bcadd(string $left_operand, string $right_operand[, int $scal...

    MASAILA 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<