php高精度数值计算

/**
 * bcadd — 将两个高精度数字相加
 * bccomp — 比较两个高精度数字,返回-1, 0, 1
 * bcdiv — 将两个高精度数字相除
 * bcmod — 求高精度数字余数
 * bcmul — 将两个高精度数字相乘
 * bcpow — 求高精度数字乘方
 * bcpowmod — 求高精度数字乘方求模,数论里非常常用
 * bcscale — 配置默认小数点位数,相当于就是Linux bc中的”scale=”
 * bcsqrt — 求高精度数字平方根
 * bcsub — 将两个高精度数字相减
 *
 * @m 第一个数值
 * @n 第二个数值
 * @x 方法,比如;add,sub等
 * @scale 小数点位数。根据需求更改即可
 */
function calc($m,$n,$x,$scale){
    $errors=array(
        '被除数不能为零',
        '负数没有平方根'
    );
    switch($x){
        case 'add':
            $t=bcadd($m,$n,$scale);
            break;
        case 'sub':
            $t=bcsub($m,$n,$scale);
            break;
        case 'mul':
            $t=bcmul($m,$n);
            break;
        case 'div':
            if($n!=0){
                $t=bcdiv($m,$n);
            }else{
                return $errors[0];
            }
            break;
        case 'pow':
            $t=bcpow($m,$n);
            break;
        case 'mod':
            if($n!=0){
                $t=bcmod($m,$n);
            }else{
                return $errors[0];
            }
            break;
        case 'sqrt':
            if($m>=0){
                $t=bcsqrt($m);
            }else{
                return $errors[1];
            }
            break;
    }
    return $t;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值