-4

変数内の数値が 50 を超える 10 進数であるか、または 50 未満であるかを確認しようとしています。次に、50 以上であるかどうかに応じて、10 進数を 99 に丸め、小さい場合は 00 に丸めます。 .

これが私のコードの一部です:

public function roundPrice($price)
{
return round( (ceil($price) - 0.01), 2);
}

すべての 10 進数を 99 に切り上げます。99 に丸めるには 50 以上の小数のみが必要で、49 以下は 00 になります。

PHPでこれを達成するにはどうすればよいですか? どうもありがとう、私はここで立ち往生していて、それを行う方法があまりわかりません。

4

5 に答える 5

5

偶然にも、OP は実際には 1.36 が 1.00 になり、1.60 が 1.99 になる小数点以下の桁数を意味していました。

おそらくもっと洗練されたソリューションですが、ここに 1 つを示します。

function roundPrice($price)
{
    $intVal = intval($price);
    if ($price - $intVal < .50) return (float)$intVal;
    return $intVal + 0.99;
}

http://codepad.org/5hIdQh4w

于 2012-05-30T14:41:12.247 に答える
0

私はあなたがこれを望んでいると思います:

public function roundPrice($price) {
    $p = round($price, 0);
    if( ceil($price) == $p) {
        return $p - 0.01;
    }
    return $p;
}

これは、値 >= X.5 に対して X.99 を返し、他のすべての値に対して X.00 を返します。

于 2012-05-30T14:43:28.180 に答える
0

99に丸めるには 50 以上の小数のみが必要で、49 以下は00になります。

奇妙な要件ですが:

public function roundPrice($price)
{
  return $price >= 50 ? 99 : sprintf("%02s", 0);
}

以上の数値50の場合は を返し99、 未満の数値50の場合は を返します。00

于 2012-05-30T14:33:35.090 に答える
0

あなたは本当に丸めているわけではないので、それについて直接してください。

public function roundPrice($price)
{
    if($price >= 50)
    {
        return 99;
    }
    else
    {
        return 0;
    }
}

あなたが述べた問題は、50 に等しい $price を処理しません。正確に 50 の値が 99 に切り上げられると仮定しました。

于 2012-05-30T14:34:23.823 に答える
0

これにより、関数が変更され、50 以上の場合は 10 進数値が返され、それ以外の場合は 0 が返されます。

public function roundPrice($price)
{
   $decValue = round( (ceil($price) - 0.01), 2);

   if ($decValue >= 50) return $decValue;
   else return 0;
}
于 2012-05-30T14:35:11.187 に答える