PHP浮点数高精度运算

php 浮点数运算
创建于:2019年10月29日 更新于:2020年03月08日

浮点数高精度运算

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, '.', ''); // 传入的第三个参数可以替换输入的“.”,第三个参数存在的话,第四个参数也必须传入