<?php
function priceTool($price, $pricePrecision, $isCarry = false) { list($int, $float) = explode('.', $price);
if (!$isCarry) return bcadd($price, 0, $pricePrecision);
$float = rtrim($float, '0'); if (!$float) { return bcadd($price, 0, $pricePrecision); }
$len = $pricePrecision - strlen($float); if ($len < 0) { $float = '1' . substr($float, 0, $pricePrecision); $float = substr(strval(++$float), 1, $pricePrecision); } else { $float = $float . str_repeat('0', $len); }
return implode('.', [$int, $float]); }
echo priceTool('20.123', 2, true), PHP_EOL;
|