作者寄语:
对价格进行向上取整
/**
* 对价格进行向上取整
* @param $price 价格
* @param $decimal 保留小数位数
*/
function upDecimal($price, $decimal=2){
//取整入1
if (empty($decimal)) {
return ceil($price);
}
$price2 = explode('.', $price);
$price1 = $price2[1] ?? 0;
$price0 = $price2[0] ?? 0;
$sublen = strlen($price1);
if ($sublen < $decimal) {
$decimal = $sublen;
}
//没有小数入1
if (empty($price1)) {
return ceil($price);
}
$subnum = bcsub($sublen, $decimal);
//计算小数
$powsub = bcpow(10, $subnum);
$price1 = bcdiv($price1, $powsub, $sublen);
$price1 = ceil($price1);
$powint = bcpow(10, $decimal);
$price1 = bcdiv($price1, $powint, $decimal);
//返回结果
return bcadd($price0, $price1, $decimal);
}