Division avec reste en PHP
J'ai une partie de mon code où j'ai besoin de diviser et d'avoir un reste à la place d'une virgule réponse.
Comment puis-je faire cela?
OriginalL'auteur | 2009-02-23
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire ce que vous décrivez à l'aide de la "%" (module) de l'opérateur. Le code suivant est un exemple de la division avec reste.
floor()
.aveuglément à l'aide de plancher pourrait échouer sur un résultat négatif
OriginalL'auteur Sam152
À l'aide de
intval
au lieu defloor
arrondir le quotient vers zéro, en fournissant des résultats précis, lorsque le dividende est négatif.Oui, j'ai remarqué que peu de temps après l'affichage et révisé ma réponse à l'utilisation
intval
plutôt quefloor
.utilisation
$remainder = fmod($dividend, $divisor)
lors de l'utilisation des nombres non entiersOriginalL'auteur Alex Barrett
Une solution pour les nombres positifs et négatifs:
OriginalL'auteur Gumbo
La mathématiques réponse correcte est:
et le reste vérifie la condition
0 <= $remainder < abs($divisor)
.Malheureusement, de nombreux langages de programmation (y compris PHP) ne gère pas les nombres négatifs correctement à partir du point de vue mathématique. Ils utilisent des règles différentes pour calculer la valeur et le signe du reste.
Si vous avez besoin de travailler avec des nombres négatifs et obtenir la mathématique des résultats corrects, alors vous pouvez utiliser les formules suivantes:
Ils dépendent de la façon dont PHP calcule le module négatif opérandes et ils ne peuvent pas obtenir le bon résultat, si elles sont transférées vers une autre langue.
Ici est un script qui implémente ces formules et vérifie les résultats obtenus par rapport aux valeurs données à titre d'exemple dans la dite mathématique de la réponse correcte.
OriginalL'auteur axiac
Si vous avez besoin de le chercher, l'opérateur % est appelé mod (ou module).
OriginalL'auteur Adam Hopkinson
J'ai eu à développer cette approche parce que mon numérateur est une valeur flottante et le module a été arrondissant les résultats.
À l'aide de Raffaello de l'approche offert ici de division de chars et de prise de Sam152 la solution ci-dessus est venu avec le suivant.
OriginalL'auteur luckyape
Utiliser Cette Fonction de Son un tableau
Description
tableau
gmp_div_qr ( resource $n , resource $d [, int $round ] )
référence : http://php.net/manual/en/function.gmp-div-qr.php
OriginalL'auteur Vineesh Kalarickal
Un exemple pour montrer comme les chaînes 1 heure 6 minutes à l'aide d'étage() et le module (%) si seulement quelques minutes/secondes données:
OriginalL'auteur K.Alex