Comment diviser les nombres mais exclure le reste en PHP?
PHP 7 a une nouvelle fonction intégrée pour ce nommé intdiv
.
Exemple:
$result = intdiv(13, 2);
La valeur de $result
dans cet exemple sera 6
.
Vous pouvez trouver la documentation complète de cette fonction dans la documentation PHP .
Pour la plupart des raisons pratiques, la réponse acceptée est correcte.
Cependant, pour les versions où les entiers ont une largeur de 64 bits, toutes les valeurs d'entier possibles ne sont pas représentables sous la forme d'un flottant double précision; Voir mon commentaire sur la réponse acceptée pour plus de détails.
Une variation de
$n = ($i - $i % $m) / $m;
(le code tiré du commentaire de KingCrunch sous une autre réponse) évitera ce problème en fonction du comportement d'arrondi souhaité (gardez à l'esprit que le résultat de l'opérateur de module peut être négatif).
En plus des décisions ci-dessus comme $result = intval($a / $b)
il y a un cas particulier:
Si vous avez besoin d'une division entière (sans reste) par une puissance de deux ($b
est 2 ^ N
) vous pouvez utiliser l'opération de décalage à droite au niveau du bit:
$result = $a >> $N;
où $ N est un nombre compris entre 1 et 32 sur le système d'exploitation 32 bits ou 64 pour les systèmes 64 bits.
Parfois, c'est utile parce que la décision la plus rapide pour le cas de $ b est une puissance de deux.
Et il y a une opération à l'envers (attention en raison du débordement!) pour multiplier par la puissance de deux:
$result = $a << $N;
J'espère que cela aide aussi quelqu'un.