11

金額を最も近いドルに丸める次のコードがあります。

    switch ($amazonResult['SalesRank']) {
    case ($amazonResult['SalesRank'] < 1 || trim($amazonResult['SalesRank'])===''|| !isset($amazonResult['SalesRank']) || $amazonResult['SalesRank']=== null):
        $Price=((float) $lowestAmazonPrice) * 0.05;
        $payPrice = round($Price, 0);  //to round the price up or down to the nearest $
        break; 
    case ($amazonResult['SalesRank'] > 0 && $amazonResult['SalesRank'] <= 15000):
        $Price=((float) $lowestAmazonPrice) * 0.20;
        $payPrice = round($Price, 0);  //to round the price up or down to the nearest $
        break;

round($Price, 2); を使用すると理解できます。小数点以下は 2 桁ですが、最も近い 50 セントに丸める方法はありますか?

4

6 に答える 6

25

いくつかの簡単な数学でうまくいくはずです。最も近い 50 セントに四捨五入する代わりに$price、最も近いドルに 2 倍してから半分に丸めます。

$payprice = round($Price * 2, 0)/2;
于 2012-07-27T17:36:57.913 に答える
17

2 を掛け、上の桁を 0 に丸めて .5 に丸め (この場合は小数点以下 1 桁に丸めます)、2 で割ります。

これにより、最も近い .5 に丸められ、0 を追加すると、最も近い .50 に丸められます。

最も近い .25 が必要な場合は、同じことを行いますが、4 で乗算および除算します。

于 2012-07-27T17:36:38.037 に答える
5
function roundnum($num, $nearest){ 
  return round($num / $nearest) * $nearest; 
} 

例えば:

$num = 50.55;
$nearest = .50;
echo roundnum($num, $nearest);

戻り値

50.50

これは、5セント、25セントなど、何にでも丸めるために使用できます...

ninjured のクレジット: http://forums.devshed.com/php-development-5/round-to-the-nearest-5-cents-537959.html

于 2013-07-18T13:20:49.600 に答える
1

丸めの代わりに床を使用する場合、浮動小数点数の内部精度のため、追加の丸めが必要になることに注意してください。

function roundnum($num, $nearest){ 
  return floor(round($num / $nearest)) * $nearest; 
} 

$num = 16.65;
$nearest = .05;
echo roundnum($num, $nearest);

それ以外の場合、16.65 ではなく 16.60 が返されます。

于 2015-02-11T10:33:51.380 に答える
1

数値を最も近いもので割って、ceil を実行してから、最も近いものを掛けて有効桁数を減らします。

function rndnum($num, $nearest){
    return ceil($num / $nearest) * $nearest;
}

元。

echo rndnum(95.5,10) は 100 を返します

echo rndnum(94.5,1) は 95 を返します

于 2014-11-18T15:04:09.463 に答える
0

マニュアル

マニュアルから:echo round(1.95583, 2); // 1.96

float round ( float $val [, int $precision = 0 [, int $mode = PHP_ROUND_HALF_UP ]] )

val
The value to round

precision
The optional number of decimal digits to round to.

mode
One of PHP_ROUND_HALF_UP, PHP_ROUND_HALF_DOWN, PHP_ROUND_HALF_EVEN, or PHP_ROUND_HALF_ODD.

に変更するだけです:echo round(1.54*2, 0)/2; // 1.5

于 2012-07-27T17:39:00.277 に答える