Pourquoi 8%-3 en PHP est-il égal à 0 ?
En PHP, pour certaines opérations mathématiques simples, on espère toujours obtenir les bons résultats. Cependant, les résultats de certaines opérations simples nous déroutent parfois. Tout comme en PHP, le résultat du calcul de 8%-3 est 0. Pourquoi cela arrive-t-il?
Pour comprendre ce problème, vous devez d'abord comprendre la définition du fonctionnement modulo. En mathématiques, l'opération modulo consiste à trouver le reste, généralement exprimé par « a mod n », où a est le dividende et n est le diviseur. Le résultat de l’opération modulo est un entier non négatif allant de 0 à n-1. Par exemple, le résultat de 9 mod 4 est 1 car 9 divisé par 4 est égal à 2 reste 1.
En PHP, l'opération modulo est représentée par le symbole %. Selon le manuel PHP, le signe du résultat de l'opération modulo est le même que le dividende. Autrement dit, si le dividende est positif, le résultat est également positif ; si le dividende est négatif, le résultat est également négatif.
Retour à notre question, 8 divisé par 3 est égal à 2 reste 2. Selon la définition du fonctionnement modulo, le résultat devrait être 2. Mais en PHP, le résultat de 8%-3 est 0. Cela viole-t-il la définition du fonctionnement modulo ?
En fait, ce phénomène n'est pas propre à PHP, mais une manière de définir le fonctionnement modulo. Dans certains langages de programmation, le résultat de l’opération modulo peut être négatif. La définition spécifique variera en fonction de la spécification du langage de programmation. En PHP, la règle « arrondir vers zéro » de l'arithmétique modulo est utilisée.
Selon le manuel PHP, lorsque le dividende est un nombre positif, le résultat de l'opération modulo est égal au reste du dividende et du diviseur ; lorsque le dividende est un nombre négatif, le résultat de l'opération modulo est égal ; au dividende divisé par le résultat arrondi du diviseur et 0 Le reste du plus grand. En d’autres termes, le résultat de l’opération modulo de PHP est toujours inférieur à la valeur absolue du dividende, mais le signe est le même que celui du dividende.
Donc, revenons à l'exemple du 8%-3. 8 est un nombre positif et -3 est un nombre négatif. Selon la règle « arrondir vers zéro », le résultat de l'opération modulo doit être le reste du plus grand du résultat de la division de 8 par -3 et 0. Le résultat de la division de 8 par -3 et de l'arrondi est -3, et le plus grand par rapport à 0 est toujours 0.
Par conséquent, le résultat de 8%-3 est égal à 0.
Cette façon de définir peut simplifier la logique du code dans certains scénarios, mais elle peut aussi être facilement mal comprise. Si l'on veut obtenir le reste d'un nombre positif, on peut utiliser la fonction fmod() fournie par PHP, qui renvoie le reste de la division des nombres à virgule flottante.
Pour résumer, 8%-3 est égal à 0 en PHP est déterminé par la façon dont l'opération modulo est définie, c'est-à-dire la règle de « l'arrondi vers zéro ». Pour comprendre ce phénomène, nous devons comprendre les spécifications du fonctionnement modulo du langage de programmation que nous utilisons et choisir la méthode de fonctionnement appropriée en fonction de la situation réelle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!