/**
* high_precision_calculate 高精度计算.
* @param float|int|string $n1
* @param string $symbol
* @param float|int|string $n2
* @param bool $format
* @param int $scale
* @return float|int|string
*/
function high_precision_calculate($n1, $symbol, $n2, $format = false, $scale = 2)
{
$res = '';
switch ($symbol) {
case '+'://加法
$res = bcadd($n1, $n2, $scale);
break;
case '-'://减法
$res = bcsub($n1, $n2, $scale);
break;
case '*'://乘法
$res = bcmul($n1, $n2, $scale);
break;
case '/'://除法
if ($n1 <= 0 || $n2 <= 0) {
$res = 0;
} else {
$res = bcdiv($n1, $n2, $scale);
}
break;
case '%'://求余、取模
$res = bcmod($n1, $n2);
break;
default:
$res = '';
break;
}
return $format ? (float)price_format($res, $scale) : (float)$res;
}
/**
* 格式化
* @param float|int $price
* @param int $scale
* @return string
*/
function price_format($price, $scale = 2)
{
return number_format($price, $scale, '.', '');
}
php 精度计算
于 2021-11-30 18:37:29 首次发布