Cóż, w obliczu tego problemu, pomagając dokonać POS dla kanadyjskiej firmy, wymyślił ten rozwiązanie, mam nadzieję, że pomaga komuś. (Kanada usunęła pensa w 2012 r.). Obejmuje również uwzględnianie cen w podatkach, wystarczy podać "1" jako drugi argh.
//calculate price and tax
function calctax($amt,$tax_included = NULL){
$taxa = 'tax rate 1 here';
$taxb = 'tax rate 2 here';
$taxc = ($taxa + $taxb) + 1;
if(is_null($tax_included)){
$p = $amt;
}else{
$p = number_format(round($amt/$taxc,2),2);
}
$ta = round($p * $taxa,2);
$tb = round($p * $taxb,2);
$sp = number_format(round($p+($ta + $tb),2),2);
$tp = number_format(round(($sp*2)/10,2)*5,2);
$ret = array($ta,$tb,$tp);
return $ret;
}
Wypróbuj także operator modulus: '$ n - ($ n% 5); zazwyczaj jest to najlepsze rozwiązanie w tych przypadkach. – Mahn