2011-01-13 72 views
1

下面是我在while循環內使用的代碼,用於在表格行中顯示一個數字,並在其旁邊顯示一個數字除以200('amount')。用php向下舍入數字

它工作正常,因爲它取下了小數,併除以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> 
    '; 
} 

乾杯

+0

您是否預計在某些時候不得不處理負數?如果是這樣,你是否希望他們去到下一個最低的數字(-1.5是否爲-2)或鏡像正數(-1.5爲-1)? – 2011-01-13 04:57:33

+1

@Mark E:沒有任何意義*金額爲 – BoltClock 2011-01-13 05:07:44

+1

@BoltClock:不熟悉會計,呃? – 2011-01-13 05:08:44

回答

3

使用floor()

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

您應該使用floor(),而不是number_format()

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

您不應該在傳遞給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 

這隻會number_format(因此,圓),如果除以量> = 200。否則,它會樓(我們知道會因爲我們只是測試它而返回零)。