私は使っている
$p1 = 66.97;
$price1 = $row['Value']*$p1;
$price1 = number_format($price1, 2, '.', '');
簡単な計算を行い、価格を小数点以下 2 桁まで表示します。これはうまくいきます。結果を最も近い に切り上げたいと思い.05
ます。これについてのアイデア - 私は苦労しています18.93
。ありがとう。18.95
19.57
19.60
私は使っている
$p1 = 66.97;
$price1 = $row['Value']*$p1;
$price1 = number_format($price1, 2, '.', '');
簡単な計算を行い、価格を小数点以下 2 桁まで表示します。これはうまくいきます。結果を最も近い に切り上げたいと思い.05
ます。これについてのアイデア - 私は苦労しています18.93
。ありがとう。18.95
19.57
19.60
あなたは次のようなことをするかもしれません:
$price = ceil($p1*20)/20;
に切り上げる必要があり0.05
ます。ceil は通常、切り上げて1
; そのため、数値に 20 ( ) を掛けて1/0.05 = 20
、ceil が必要なことを実行できるようにしてから、思いついた数値を割る必要があります。
float 演算に注意してください。実際の結果は、12.95 ではなく 12.949999999999999999999 のようになる場合があります。したがって、例のようにsprintf('%.2f', $price)
またはで文字列に変換する必要がありますnumber_format
答えに 100 を掛けてから、5 で割り算します。剰余が 3 未満の場合は剰余を引き、そうでない場合は (5 - 剰余) を足します。次に、最終結果を得るために 100 で割ります。
試す:
function roundUpToAny($n,$x=5) {
return round(($n+$x/2)/$x)*$x;
}
i.e.:
echo '52 rounded to the nearest 5 is ' . roundUpToAny(52,5) . '<br />';
// returns '52 rounded to the nearest 5 is 55'
$price = ceil($price1 * 20) / 20;