2011-01-13 1 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)? –

+1

@Mark E: Не имеет смысла иметь отрицательную * сумму *;) – BoltClock

+1

@BoltClock: незнакомый с бухгалтерским учетом, а? –

ответ

3

Используйте floor():

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

Это сработало, спасибо! – AdamMc

0

Вы должны использовать floor() вместо number_format()

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

Это тоже помогло, еще раз спасибо! – AdamMc

0

Вы не должны форсировать преобразование типа в строку в первом аргументе, который вы передаете number_format. Кроме того, второй аргумент по умолчанию равен нулю, поэтому вам не нужно явно указывать его. Вы можете просто использовать number_format($row['amount']/200); на этой линии.

Что касается вашего вопроса, я собираю, что вы хотите округлить, когда сумма превышает 200, только чтобы вы не получили «1» в результате, когда сумма> = 100. Чтобы сделать что вам нужно будет сделать что-то вдоль линий этого:

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

// display code here 

это будет только number_format (и, таким образом, круглые), если разделить количество составляет> = 200. в противном случае это будет пол (который мы знаем, будет return zero, так как мы просто протестировали его).