罕用的数学函数
// 2个任意精度数字的加法 echo bcadd($a, $b, 2); // 2个任意精度数字的减法 echo bcsub($a, $b, 2); // 2个任意精度数字的乘法 echo bcmul($a, $b, 2); // 2个任意精度数字的除法 echo bcdiv($a, $b, 2); // 对一个任意精度数字取模(余数) echo bcmod($a, $b); // 一个任意精度数字的乘方 echo bcpow($a, $b, 2); // 比拟两个任意精度的数字,相等返回0,大于返回1,小于返回-1 echo bccomp($a, $b, 2);
应用数学函数有以下几个须要留神的中央:
- 除
bccomp
外,其余几个函数的返回值都是 string 类型; - 精度默认为0,对于精度前面小数局部的解决形式是间接去掉,而非四舍五入或进一法取整或舍去法取整;
bccomp
会先解决精度再进行比拟。
罕用的数值处理函数
// 进一法取整 echo ceil(4.3); // 5 echo ceil(-3.64); // -3 // 舍去法取整 echo floor(9.999); // 9 echo floor(-3.14); // -4 // 四舍五入 echo round(1.955, 2); // 1.96 echo round(2.732, 2); // 2.73
其中 round 有可选的第三个参数:
- PHP_ROUND_HALF_UP 四舍五入(默认)
- PHP_ROUND_HALF_DOWN 五舍六入
应用示例:
// PHP_ROUND_HALF_UP 四舍五入 echo round(0.001, 2, PHP_ROUND_HALF_UP) . "\n"; // 0 echo round(0.003, 2, PHP_ROUND_HALF_UP) . "\n"; // 0 echo round(0.005, 2, PHP_ROUND_HALF_UP) . "\n"; // 0.01 echo round(0.007, 2, PHP_ROUND_HALF_UP) . "\n"; // 0.01 echo round(0.009, 2, PHP_ROUND_HALF_UP) . "\n"; // 0.01
// PHP_ROUND_HALF_DOWN 五舍六入 echo round(0.001, 2, PHP_ROUND_HALF_DOWN) . "\n"; // 0 echo round(0.003, 2, PHP_ROUND_HALF_DOWN) . "\n"; // 0 echo round(0.005, 2, PHP_ROUND_HALF_DOWN) . "\n"; // 0 echo round(0.007, 2, PHP_ROUND_HALF_DOWN) . "\n"; // 0.01 echo round(0.009, 2, PHP_ROUND_HALF_DOWN) . "\n"; // 0.01
对小数的取整解决
// 向上取整 echo ceil(0.051 * 100) / 100 . "\n"; // 0.06 echo ceil(0.053 * 100) / 100 . "\n"; // 0.06 echo ceil(0.055 * 100) / 100 . "\n"; // 0.06 echo ceil(0.057 * 100) / 100 . "\n"; // 0.06 echo ceil(0.059 * 100) / 100 . "\n"; // 0.06
// 向下取整 echo floor(0.051 * 100) / 100 . "\n"; // 0.05 echo floor(0.053 * 100) / 100 . "\n"; // 0.05 echo floor(0.055 * 100) / 100 . "\n"; // 0.05 echo floor(0.057 * 100) / 100 . "\n"; // 0.05 echo floor(0.059 * 100) / 100 . "\n"; // 0.05