2011-01-13 3 views
1

Ci-dessous le code que j'utilise dans une boucle while pour afficher un nombre dans une ligne de table et son montant divisé par 200 juste à côté ('amount').Arrondir vers le bas les nombres divisés avec php

Cela fonctionne bien, car il enlève les décimales et divise par 200, mais je me demandais comment arrondir vers le bas? Par exemple, si j'ai 850, il fera écho à '4', mais si la valeur est supérieure à 900, il fera écho à '5'. Je crois comprendre que si elle est à la moitié de 200, elle sera arrondie, mais comment puis-je arrondir tout ce qui est inférieur à 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> 
    '; 
} 

Vive

+0

Pensez-vous avoir à composer avec des nombres négatifs à un moment donné? Si oui, voulez-vous qu'ils passent au nombre le plus bas suivant (-1.5 va-t-il à -2) ou inversent-ils les nombres positifs (-1.5 passe à -1)? –

+1

@Mark E: Il ne serait pas logique d'avoir un montant * négatif *;) – BoltClock

+1

@BoltClock: pas familier avec la comptabilité, hein? –

Répondre

3

Utilisez floor():

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

Cela a fonctionné, merci! – AdamMc

0

Vous devez utiliser floor() au lieu de number_format()

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

Cela a fonctionné aussi, merci encore! – AdamMc

0

Vous ne devez pas forcer une conversion de type à une chaîne dans le premier argument que vous transmettez à number_format. De plus, le deuxième argument est zéro par défaut, vous n'avez donc pas besoin de le spécifier explicitement. Vous pouvez simplement utiliser number_format($row['amount']/200); sur cette ligne.

En ce qui concerne votre question, je crois que vous voulez arrondir lorsque le montant est supérieur à 200 seulement de sorte que vous n'obteniez pas "1" en conséquence quand le montant est> = 100. Pour faire que, vous aurez besoin de faire quelque chose le long des lignes de ce:

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

// display code here 

ce ne number_format (et donc, tour) si le montant est divisé> = 200. Sinon, ce sera étage (qui, nous le savons retour zéro puisque nous venons de le tester).

Questions connexes