2011-01-13 2 views
1

다음은 테이블 루프 내에 숫자를 표시하기 위해 while 루프 내에서 사용하는 코드이며, 그 값을 바로 옆에 200으로 나눈 코드입니다 ('금액').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

@ 마크 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으로 전달되는 첫 번째 인수의 문자열로 유형 변환을 강제해서는 안됩니다. 또한 두 번째 인수의 기본값은 0이므로 명시 적으로 지정할 필요가 없습니다. 해당 행에 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 (따라서, 원형)이 바닥 (우리 것 알 만 할 것이다 : 즉, 당신이의 라인을 따라 뭔가를해야합니다 방금 테스트 한 이래로 0이 반환 됨).