関数を検索すると、数値が5の倍数に最も近い値に丸められます。
22 -> 20
23 -> 25
40 -> 40
46 -> 45
48 -> 50
等々。
常に高い値を返すこれを試しました:
5 * ceil($n / 5);
round()
の代わりに使用してくださいceil()
。
5 * round($n / 5);
ceil()
浮動小数点数を次の整数に順番に切り上げます。round()
標準の丸め規則を使用して、最も近い整数に丸めます。
数学に戻ります。丸めは小数で機能するため、5を掛け、10で割ってから、丸めます。もう一度5を掛けて、必要なものを取得します。(他の答えも同様に機能しますが、それを見る方法が異なります)
function round_5($in)
{
return round(($in*2)/10)*5;
}
echo round_5(48);
これが役立つかどうかを確認する
さて、カナダの会社のPOSの作成を支援しながらこの問題に直面し、この解決策を考え出しました。それが誰かに役立つことを願っています。(カナダは2012年にペニーを削除しました)。税込価格設定を行う場合も含まれます。2番目の引数として「1」を渡すだけです。
//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;
}