使用PHP,如何检查十进制数是高于还是小于50?

时间:2012-05-30 14:29:34

标签: php format rounding decimal ceil

我试图检查变量中的数字是否得到高于50或小于50的十进制数。然后取决于它是否为50或更高,将十进制数舍入为99,如果它更少,将它四舍五入到00.

这是我的一段代码:

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

它使所有十进制数最多为99。我只需要50或更高的小数在99中四舍五入,49或更小的小数变为00。

我怎样才能在PHP中实现这一点?非常感谢,我被困在这里并且不知道如何做到这一点。

5 个答案:

答案 0 :(得分:4)

关闭机会OP实际上是指小数位数,其中1.36变为1.00,而1.60变为1.99。

可能更优雅的解决方案,但这里有一个:

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

http://codepad.org/5hIdQh4w

答案 1 :(得分:0)

  

我只需要在 99 中舍入50或更高的小数,   并且49或更少变为 00

奇怪 要求,但是:

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

对于大于或等于50的数字,它会返回99,而对于小于50的数字,它会返回00

答案 2 :(得分:0)

你不是真正的四舍五入,所以直接谈论它。

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

你陈述的问题不能处理等于50的$ price。我假设正好50轮的价值达到99.

答案 3 :(得分:0)

如果它的值为50或以上,则修改函数以返回小数值,否则返回0。

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

   if ($decValue >= 50) return $decValue;
   else return 0;
}

答案 4 :(得分:0)

我想你想要这个:

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

对于所有其他值,返回X.99表示值> = X.5和X.00。