PHP任意精度数学函数扩展包BCMath

        BCMath扩展提供了一套bc(Binary Calculator)数学函数,它是一个高精度运算的函数库,可以准确地对任意精度的数字进行运算。
        PHP的Windows版本已内建对此扩展的支持,Linux版本则需要手动 安装BCMath
        bcadd($left_operand,$right_operand[,$scale]):两个任意精度数字的加法计算,计算实际结果不满足精度时会补0。
        bcsub($left_operand,$right_operand[,$scale]):两个任意精度数字的减法计算,计算实际结果不满足精度时会补0。
        bcmul($left_operand,$right_operand[,$scale]):两个任意精度数字的乘法计算,计算实际结果不满足精度时会返回按实际精度返回。
        bcdiv($left_operand,$right_operand[,$scale]):两个任意精度数字的除法计算,计算实际结果不满足精度时会补0。如果除数($right_operand)按指定精度($scale)取值为0,则返回null,并产生一个警告。
         bcmod($left_operand,$modulus):对一个任意精度的数字取模计算,如果系数($modulus)为0,则返回null,并产生一个警告。计算结果的正负只取决于$left_operand。
         bcpow($left_operand,$right_operand[,$scale]):任意精度数字的乘方计算,$left_operand可以是任何数字,$right_operand只能为整数,且当$right_operand小于0时,当计算结果不满足精度时会补0,当$right_operand不小于0时,当返回的结果不需要精确到所指定的精度时,会按实际的精度返回。
         bcsqrt($operand[,$scale]):任意精度数字的二次方根,如果操作数($operand)是负数则返回null,并产生一个警告。
        bcpowmod($base,$exponent,$modulus[,$scale=0]):先计算$base的$exponent次方,然后对乘方结果对$modulus求模,$scale必须为0,如果$exponent为负数,则返回null。如果$base、$exponent与$modulus不是整数,会产生一个警告。此函数PHP4不支持。
        bccomp($left_operand,$right_operand[,$scale]):比较两个任意精度的数字。如果相等返回0,如果$left_operand>$right_operand返回1,否则返回-1。
        bcscale($scale)设置所有bc数学函数的默认小数点保留位数。设置成功返回true,否则返回false。
        在以上函数中除bcscale()外所有的精度都是可选参数,当不显示指定精度,且并未调用bcscale()方法时,精度的默认值为php安装目录下php.ini文件中bcmath.scale配置的值,默认为0。
<?php
$a=1.2345;
$b=6.7;

echo bcadd($a,$b);
echo bcadd($a,$b,2);
echo bcadd($a,$b,5);

echo bcsub($a,$b);
echo bcsub($a,$b,2);
echo bcsub($a,$b,5);

echo bcmul($a,$b);
echo bcmul($a,$b,2);
echo bcmul($a,$b,5);

$a=5;
$b=2;
echo bcdiv($a,$b);
echo bcdiv($a,$b,2);
echo bcdiv($a,$b,5);

echo bcmod($a,$b);
echo bcmod($a,-$b);
echo bcmod(-$a,$b);
echo bcmod(-$a,-$b);

echo bcpow($a,$b);
echo bcpow($a,-$b,5);
$a=-5.1
echo bcpow($a,$b,5);
$a=9
$b=5.1;
echo bcsqrt($a,5);
echo bcsqrt($b);
echo bcsqrt($b,3);

echo bcpowmod(5,2,3);
echo bcpowmod(-5,2,3);
echo bcpowmod(5,2,-3);
	
echo bcpowmod($a,$b,2);
echo bcpowmod($a,$b,5);
$a=1.2345123
$b=1.2345456
echo bccomp($a,$b);
echo bccomp($a,$b,4);
echo bccomp($a,$b,5);
?>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值