1.简介
对于任意精度的数学,PHP提供了支持用字符串表示的任意大小和精度的数字的二进制计算,
最多为2147483647-1(或0x7FFFFFFF-1)。
本类函数仅在 PHP 编译时配置了 --enable-bcmath 时可用。
PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。
2.含义
(1)2个任意精度数字的加法计算
$v = bcadd(1.11,2.222,8);
var_dump($v); //结果:string(10) "3.33200000"
(2)2个任意精度数字的减法计算
$v = bcsub(1.11,2.222,8);
var_dump($v); //结果:string(11) "-1.11200000"
(3)2个任意精度数字的乘法计算
$v = bcmul(1.11,1.11,6);
var_dump($v); //string(8) "1.232100"
(4)2个任意精度的数字除法计算
$v = bcdiv(1.11,2.2222,8);
var_dump($v); //结果: string(10) "0.49950499"
(5)比较两个任意精度的数字
$v = bccomp(1.11111,1.1112222);
var_dump($v); //结果: int(0)
(6)任意精度数字的乘方
$v = bcpow(4.2,3,4);
var_dump($v); //结果string(7) "74.0880"
(7)对一个任意精度数字取模
$v = bcmod(100.24,17,8);
var_dump($v); //结果: string(11) "15.24000000"
(8)设置所有bc数学函数的默认小数点保留位数
bcscale(8);//在当前域中有作用函数
$v = 3.1415926;
var_dump($v); //结果double(3.1415926)
(9)返回操作数的二次方根
$v = bcsqrt(2,6); //√3
var_dump($v); //结果 string(8) "1.414213"
(10)先次方再取模
$a = bcpowmod(2, 4, 10,2); // 相当于bcmod(bcpow(2,4),10,2)
var_dump($a); //结果:string(4) "6.00"
使用场景:例如 计算发票税需要保留8位小数
如果中间加入字符串会出现Fatal error