-4

我正在尝试检查变量内的数字是否具有大于 50 或小于 50 的十进制数。然后根据它是否为 50 或更高,将十进制数四舍五入为 99 ,如果小于,将其四舍五入为 00 .

这是我的一段代码:

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

它使所有十进制数四舍五入到 99 。我只需要将 50 或更高的小数四舍五入为 99,而 49 或更少的小数变为 00。

我怎么能在 PHP 中实现这一点?非常感谢,我被困在这里,不知道该怎么做。

4

5 回答 5

5

在偶然的情况下,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

于 2012-05-30T14:41:12.247 回答
0

我只需要 50 或更高的小数在99中四舍五入,并且 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 或更高,这会修改您的函数以返回十进制值,否则返回 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 回答
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 回答