【问题标题】:How to round up integer in PHP?如何在 PHP 中舍入整数?
【发布时间】:2011-12-14 15:13:33
【问题描述】:

我想将任何一个整数四舍五入到下一个十位数字。

一些例子来说明我的观点:

-- 我有数字 1,我希望将其四舍五入到 10

-- 我的数字是 35,我希望将其四舍五入到 40

-- 我的数字是 72,我希望这个数字四舍五入到 80

--等等等等

// $category_count's value is 38
for($i = 1; $i <= $category_count; $i++) 
{ 
       if($i % 10 == 0)
       {
          echo "<a href=\"?page=$i\">$i;</a>"; 
       }
    }

上面的代码输出了3个链接,我也需要第四个。

【问题讨论】:

标签: php integer rounding


【解决方案1】:

编辑了我的答案以指向这个问题。基本上是一样的,有很多好的答案。

How to round up a number to nearest 10?

【讨论】:

  • 这不是一直在取整吗?回声轮(3.4); // 3
  • @KeithDonegan 来自文档mode: One of PHP_ROUND_HALF_UP, PHP_ROUND_HALF_DOWN, PHP_ROUND_HALF_EVEN, or PHP_ROUND_HALF_ODD 并且有示例。单击链接@mrtsherman,非常友好地为您发布。 :)
  • @sequoiamcdowell - 我讨厌人们甚至不能花 15 秒来阅读文档。谷歌搜索可以在一分钟内解决这个问题。
  • 可悲的是,他(也许还有其他人)可能会使用已接受答案中的代码来 a) 无意中混淆代码和 b) 重新创建 php 原生执行的操作。 :(
【解决方案2】:

一种方法是加 9,然后在十位截断(整数除以十,然后乘以十)。

或者,您可以添加 5,然后使用具有负精度的 round 函数:

echo round ($i + 5, -1);

【讨论】:

    【解决方案3】:

    这样的事情应该可以工作:

    (int(i/10) + 1) x 10
    

    【讨论】:

      【解决方案4】:

      试试下面的

      ceil($category_count/10)*10
      

      【讨论】:

        【解决方案5】:

        您的for 无效。如果您需要对计数器进行模数 10,请改用此代码:

        for($i = 1, $c = ceil($category_count/10); $i <= $c; $i++) 
        { 
            $j = $i * 10;
            echo "<a href=\"?page=$j\">$j;</a>"; 
        }
        

        【讨论】:

        • imo 最好先存储 ceil() 结果,否则每个循环周期都会对其进行评估
        • @YanickRochon 谢谢!
        【解决方案6】:

        mrtsherman 几乎是对的,但 OP 的问题需要它来四舍五入 (1 => 10)

        // $category_count's value is 38
        $loop_limit = ceil($category_count/10);
        for ($i = 1; $i <= $loop_limit; $i++) {
          $page = $i * 10;
          echo "<a href=\"?page={$page}\">{$page}</a>";
        }
        

        【讨论】:

        • 如果您阅读文档,您会发现 round 函数完全可以做到这一点。
        • 看了看,它仍然不会舍入 0.1 -> 1(这是我们需要的)
        【解决方案7】:
        round(($num/10))*10; // Make sure num is an integer or use (int) to convert string to integer.
        

        这对我有用:)

        【讨论】:

          猜你喜欢
          • 2011-10-21
          • 2011-05-13
          • 1970-01-01
          • 2022-07-27
          • 1970-01-01
          • 1970-01-01
          • 2011-11-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多