精确计算升级版

<?php
/**
 * 数据计算工具类
 * User: Eden
 * Date: 19-4-26 上午9:23
 */

namespace Common\Util;
class MathUtil extends CommonUtil {
    /**
     * 处理精准度
     * @param $a
     * @param string $scale
     * @return string
     */
    public static function precise($a,$scale = '2') {
        return number_format($a, $scale, '.', ''); // 四舍五入
        //return bcsub($a,0,$scale);  // 直接截取
    }

    /**
     * 精确加法
     * @param $a
     * @param $b
     * @param string $scale
     * @return string
     */
    public static function add($a,$b,$scale = '2') {
        $new_scale = (int)$scale + 2;
        $res = bcadd($a,$b,$new_scale);
        return number_format($res, $scale, '.', '');
    }


    /**
     * 精确减法
     * @param $a
     * @param $b
     * @param string $scale
     * @return string
     */
    public static function sub($a,$b,$scale = '2') {
        $new_scale = (int)$scale + 2;
        $res = bcsub($a,$b,$new_scale);
        return number_format($res, $scale, '.', '');
    }

    /**
     * 精确乘法
     * @param $a
     * @param $b
     * @param string $scale
     * @return string
     */
    public static function mul($a,$b,$scale = '2') {
        $new_scale = (int)$scale + 2;
        $res = bcmul($a,$b,$new_scale);
        return number_format($res, $scale, '.', '');
    }

    /**
     * 精确除法
     * @param $a
     * @param $b
     * @param string $scale
     * @return string
     */
    public static function div($a,$b,$scale = '2') {
        $new_scale = (int)$scale + 2;
        $res = bcdiv($a,$b,$new_scale);
        return number_format($res, $scale, '.', '');
    }

}
posted @ 2019-12-12 13:36  TBHacker  阅读(170)  评论(0编辑  收藏  举报