• php BCmath 封装类


    <?php
    /**
     * BCmath 封装类
     * Calc::add(1,2,3)->sub(1,2)->mul(4, 5)->value(4); //按步骤计算1+2+3-1-2*4*5 最后调用 value 方法获取保留4位小数
     */
    namespace AppTools;
    
    /**
     * @method AppToolsCalc add(string ...$value) 加法
     * @method AppToolsCalc sub(string ...$value) 减法
     * @method AppToolsCalc mul(string ...$value) 乘法
     * @method AppToolsCalc div(string ...$value) 除法
     * @method AppToolsCalc comp(string ...$value) 比较
     * @method AppToolsCalc mod(string ...$value) 取模
     * @method AppToolsCalc pow(string ...$value) 乘方
     * @method AppToolsCalc sqrt(string ...$value) 开方
     */
    
    class Calc
    {
        protected $init = 0;
        protected $carry = [];
    
        public function __construct($value = 0)
        {
            $this->init = $value;
        }
    
        public static function init($value = 0)
        {
            return new static($value);
        }
    
        public static function __callStatic($method, $args)
        {
            return self::init(array_shift($args))->$method(...$args);
        }
    
        public function __call($method, $args)
        {
            $this->carry[] = ['bc' . $method => $args];
            return $this;
        }
    
        /**
         * 获取值
         * @param int $scale 保留小数位
         * @return string
         */
        public function value(int $scale = 2): string
        {
            foreach ($this->carry as $item) {
                foreach ($item as $func => $value) {
                    $this->init = array_reduce($value, function ($carry, $val) use ($func, $scale) {
                        return $func($carry, $val, $scale);
                    }, $this->init);
                }
            }
            return $this->init;
        }
    
    
    }
  • 相关阅读:
    Linux下暴力破解工具Hydra详解
    Github 安全类Repo收集整理
    Linux下显示IP地理位置信息的小工具-nali
    一次渗透小记
    一步随心,一生无悔
    巧遇"drwxr-xr-x."权限
    mysql以ROOT权限提权方法
    HTTP消息中header头部信息的讲解
    浏览器安全-初学篇
    高并发工具推荐
  • 原文地址:https://www.cnblogs.com/zbseoag/p/14888910.html
Copyright © 2020-2023  润新知