【问题标题】:With PHP, how to check if decimal number is above or less than 50?使用 PHP,如何检查十进制数是大于还是小于 50?
【发布时间】:2012-05-30 14:29:33
【问题描述】:

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

这是我的一段代码:

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

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

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

【问题讨论】:

  • 你的意思是 0.99 还是实际上是 99?

标签: php format rounding decimal ceil


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你不是真的四舍五入,所以直接说吧。

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

    您陈述的问题不处理等于 50 的 $price。我假设正好 50 的值四舍五入为 99。

    【讨论】:

    • return 0; 将只返回 0 而不是 00
    • @Sarfraz - 0 是一个数字,而不是一个字符串。你想要一个字符串吗?
    • 0 00?考虑到问题的陈述,我假设 0 = 00。
    • @SurrealDreams:是的,但似乎 OP 想要两个零,尽管它们是相同的。
    • 我可以让它说return 00,但这不会使它的行为与它有任何不同。
    【解决方案3】:

    这会修改您的函数以在大于或等于 50 时返回十进制值,否则返回 0。

    public function roundPrice($price)
    {
       $decValue = round( (ceil($price) - 0.01), 2);
    
       if ($decValue >= 50) return $decValue;
       else return 0;
    }
    

    【讨论】:

      【解决方案4】:

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

      奇怪的要求但是:

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

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

      【讨论】:

      • 我认为他的意思是小数位。 Ex 1.37 变成 1.00 而 1.67 变成 1.99?
      • 我想你错过了一个?那里... :)
      • 谢谢大家。 @tigrang:这是正确的,抱歉我的问题还不够清楚,我又读了一遍。
      【解决方案5】:

      我想你想要这个:

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

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

      【讨论】:

        猜你喜欢
        • 2018-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-27
        • 1970-01-01
        • 2015-05-23
        • 1970-01-01
        相关资源
        最近更新 更多