Округление разделенных чисел с помощью php - PullRequest
1 голос
/ 13 января 2011

Ниже приведен код, который я использую в цикле while для отображения числа в строке таблицы, и его количество делится на 200 рядом с ним ( 'сумма' ).

Работает нормально, снимает десятичные дроби и делит на 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>
    ';
}

Приветствия

Ответы [ 4 ]

3 голосов
/ 13 января 2011

Использование floor():

echo number_format(floor($row['amount']/200),0); 
1 голос
/ 13 января 2011
0 голосов
/ 13 января 2011

Вы не должны принудительно преобразовывать тип в строку в первом аргументе, который вы передаете 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. В противном случае этоfloor (который мы знаем, вернет ноль, так как мы только что проверили его).

0 голосов
/ 13 января 2011

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

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