浮点数高精度运算
bcadd — 将两个高精度数字相加
bcadd(加数,加数,保留小数位)
echo bcadd(3.1415, 1.2344, 3); // 4.375
echo bcadd(3.1415, 1.2345, 3); // 4.376
bccomp — 比较两个高精度数字,相等返回 0,左边比右边大返回 1, 右边比左边大 -1;
echo bccomp(3.1415, 1.2345, 2); // 1
// 第三个参数为比较到小数点后几位
echo bccomp(0.1, 0.5); // 此时返回值为 0
echo bccomp(0.1, 0.5, 1); // 此时返回值为 -1
bcdiv — 将两个高精度数字相除
bcdiv(除数, 被除数, 保留小数位)
echo bcdiv(2, 3, 3); // 0.666
bcmod — 求高精度数字余数
echo bcmod(10, 4); // 2
bcmul — 将两个高精度数字相乘
bcmul(乘数, 乘数, 保留小数位)
echo bcmul(3.14, 1.2, 3); // 3.768
bcpow — 求高精度数字乘方
bcpow(3, 2); // 9
bcsqrt — 求高精度数字平方根
bcsqrt(被开方数, 保留小数位)
echo bcsqrt(8, 2); // 2.82
bcsub — 将两个高精度数字相减
bcsub(减数, 被减数, 保留小数位)
echo bcsub(3.14159, 2.214, 4); // 0.9275
保留小数位
$num = 3.14159;
//第一种:利用round()对浮点数进行四舍五入
echo round($num, 3); //3.142
//第二种:利用sprintf格式化字符串
echo sprintf("%.3f",$num); //3.142,自动四舍五入
//第三种:利用千位分组来格式化数字的函数number_format()
echo number_format($num, 2); //3.142,自动四舍五入
//或者如下
echo number_format($num, 2, '.', ''); // 传入的第三个参数可以替换输入的“.”,第三个参数存在的话,第四个参数也必须传入