【问题标题】:Rounding down divided numbers with php用php四舍五入除数
【发布时间】:2026-02-03 18:25:01
【问题描述】:

下面是我在 while 循环中使用的代码,用于在表格行中显示一个数字,它的数量除以旁边的 200('amount')。

它可以去掉小数并除以 200,但我想知道如何将它四舍五入?

例如,如果我有 850,它将回显“4”,但是如果数量超过 900,它将回显“5”。我认为如果超过 200 的一半,它会四舍五入,但我如何才能将低于 200 的所有内容四舍五入?

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo '<tr>';
    echo '<td align="left"><strong>' . $row['name'] . '</strong></td> ';
    echo  '<td align="left">' . $row['amount'] . '</td>';
    echo  '<td align="center"><strong><font color="#be0f34">'; 
    echo number_format("{$row['amount']}"/200,0); 
    echo '</font></strong></td>';
    echo  '<td align="center">' . $row['date'] . '</td>
    </tr>
    ';
}

干杯

【问题讨论】:

  • 您是否预计在某些时候必须处理负数?如果是这样,您是否希望它们进入下一个最低数字(-1.5 是否进入 -2)或镜像正数(-1.5 进入 -1)?
  • @Mark E:负的 amount 没有意义;)
  • @BoltClock:不熟悉会计,嗯?
  • @Mark E,此时我不会使用负数

标签: php row while-loop echo number-formatting


【解决方案1】:

使用floor():

echo number_format(floor($row['amount']/200),0); 

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      您应该使用floor() 而不是number_format()

      echo floor($row['amount']/200);
      

      【讨论】:

        【解决方案4】:

        您不应该在传递给number_format 的第一个参数中强制将类型转换为字符串。此外,第二个参数默认为零,因此您无需明确指定。您可以在该行使用number_format($row['amount'] / 200);

        就您的问题而言,我收集到您只想在金额高于 200 时进行舍入,这样当金额 >= 100 时您不会得到“1”。要做到这一点,您将需要按照以下方式做一些事情:

        $divided_amount = $row['amount'] / 200;
        $divided_amount = floor($divided_amount) ? number_format($divided_amount) : '0';
        
        // display code here
        

        只有在除以 >= 200 的情况下才会number_format(因此,四舍五入)。否则它会取整(我们知道它将返回零,因为我们刚刚测试过它)。

        【讨论】: