Diviser entier et obtenir la valeur entière
Dans des langages comme C ou Python, si je diviser un nombre entier par un nombre entier, je reçois un nombre entier:
>>> 8/3
2
Mais en PHP, si j'ai diviser un nombre entier par un autre entier avec /
, parfois, je reçois un float:
php > var_dump(6/3);
int(2)
php > var_dump(8/3);
float(2.6666666666667)
J'aimerais faire de la division comme en Python ou C, de sorte que 8/3 est 2. Comment puis-je le faire en PHP?
- possible en double questions/2055469
- SI vous autour de la ci-dessus, vous obtiendrez
6
, de quoi avez-vous besoin de 5 ou 6? - il y a plus d'un arrondissement types: en.wikipedia.org/wiki/Rounding#Tie-breaking. Donc, si vous tour 5.6 - vous ne savez pas ce que vous obtenez (sans préciser de la façon dont vous voulez qu'il soit arrondi)
- Oui en effet fonctionner comme
ceil()
etfloor()
sont les fonctions qui arrondit différemment.
Vous devez vous connecter pour publier un commentaire.
utilisation
round()
fonction pour obtenir entier arrondi de la valeur.ou
Utilisation
floor()
fonction permettant d'obtenir la valeur entièrefloor()
sera de retour d'unefloat
PAS un nombre entier, de sorte que vous obtenez2.0
et pas2
. Fonte le résultat pour vous assurer d'obtenir un nombre entier:(int)floor(8/3)
intdiv
), tandis que le Python tronque vers l'infini négatif.En PHP 7, il est intdiv fonction de faire exactement ce que vous voulez.
Utilisation:
Retourne
2
.Il n'y a pas de division entière de l'opérateur en PHP. 1/2 rendements le flotteur 0.5. La valeur peut être utilisé pour un nombre entier de tour vers le bas, ou la fonction round() fournit un contrôle plus précis sur l'arrondissement.
Manuel PhP
de l'utiliser....
ce retourne la valeur entière.
utilisez le type coulée.
(0.1 + 0.7) * 10
est7.99999999999999911182158029987476766109466552734375
. Il est parfaitement exact qu'un(int)
cast tronque cette valeur de 7. Lors de la division d'un entier par un autre entier, comme c'est le cas dans la question et la réponse ici, par exemple à virgule flottante d'erreur ne peut pas modifier le post-troncature résultat.Il y a plusieurs façons de pratiquer la division entière en PHP. La langue n'est pas un opérateur de division entière, mais il ya plusieurs options pour l'arrondi de la virgule flottante, le quotient d'un nombre entier:
Sur PHP 7, vous pouvez utiliser
intdiv($p, $q)
directement effectuer des division entière. C'est l'équivalent de(int)($p /$q)
sur PHP 5.(int)
fonte etintdiv()
de retour d'appel ints, maisround()
etfloor()
reviennent tous les deux flotteurs.Vous pouvez utiliser le shortform en ajoutant |0 à la fin
8/3/0
Pour la version de PHP 7 =>
intdiv(a,b)
Et pour les versions moins de 7 (comme 5.6) =>
(int)floor(abs(a/b))
POUR PHP 7 essayez de
intdiv()
Fonction:Pour les Anciennes versions de PHP: