要使用 BC 这个函数库,要在编译 PHP 程序时加入 –enable-bcmath 的选项。
bcsub - 从另一个中减去一个任意精度数
bcadd - 添加两个任意精度数字
bcdiv - 除以两个任意精度数
bcmul - 将两个任意精度数相乘
bcadd: 将二个高精确度数字相加。
bccomp: 比较二个高精确度数字。
bcdiv: 将二个高精确度数字相除。
bcmod: 取得高精确度数字的余数。
bcmul: 将二个高精确度数字相乘。
bcpow: 求一高精确度数字次方值。
bcscale: 配置程序中所有 BC 函数库的默认小数点位数。
bcsqrt: 求一高精确度数字的平方根。
bcsub: 将二个高精确度数字相减。
不遵循四舍五入原则
进行计算的两个值也可以是字符串型或数字型
返回值类型是字符串
例子:
bcmul(0.5, 0.333, 2)
结果为: 0.16(注:不是0.17)
第三个参数表示保留的小数点位数
更多示例参考:
/**
* 两个高精度数比较
*
* @access global
* @param float $left
* @param float $right
* @param int $scale 精确到的小数点位数
*
* @return int $left==$right 返回 0 | $left$right 返回 1
*/
var_dump(bccomp($left=4.45, $right=5.54, 2));
// -1
/**
* 两个高精度数相加
*
* @access global
* @param float $left
* @param float $right
* @param int $scale 精确到的小数点位数
*
* @return string
*/
var_dump(bcadd($left=1.0321456, $right=0.0243456, 2));
//1.04
/**
* 两个高精度数相减
*
* @access global
* @param float $left
* @param float $right
* @param int $scale 精确到的小数点位数
*
* @return string
*/
var_dump(bcsub($left=1.0321456, $right=3.0123456, 2));
//-1.98
/**
* 两个高精度数相除
*
* @access global
* @param float $left
* @param float $right
* @param int $scale 精确到的小数点位数
*
* @return string
*/
var_dump(bcdiv($left=6, $right=5, 2));
//1.20
/**
* 两个高精度数相乘
*
* @access global
* @param float $left
* @param float $right
* @param int $scale 精确到的小数点位数
*
* @return string
*/
var_dump(bcmul($left=3.1415926, $right=2.4569874566, 2));
//7.71
/**
* 设置bc函数的小数点位数
*
* @access global
* @param int $scale 精确到的小数点位数
*
* @return void
*/
bcscale(3);
var_dump(bcdiv(’105′, ’6.55957′));
// 16.007