Comprendre les calculs de module de Java avec des nombres négatifs
Lors de l'exécution de calculs de module avec des nombres négatifs en Java, les utilisateurs peuvent rencontrer des résultats inattendus. Par exemple, -13 % 64 donne -13 au lieu des 51 prévus.
Cet écart provient des définitions différentes de l'opérateur de module pour les nombres négatifs utilisés dans les langages de programmation. Java adopte une définition qui renvoie l'opérande négatif si le reste est négatif. Cela correspond à la définition mathématique de l'opérateur de module pour les nombres négatifs.
Cependant, certains utilisateurs préfèrent une définition alternative qui renvoie un reste positif quel que soit le signe de l'opérande. Pour obtenir ce comportement souhaité en Java, un simple extrait de code peut être utilisé :
<code class="java">int r = x % n; if (r > 0 && x < 0) { r -= n; }</code>
Dans ce code, la variable r contient initialement le résultat de x % n. Si r est positif alors que x est négatif, cela indique que le calcul du module d'origine a abouti à un nombre négatif. Le code soustrait ensuite n de r pour décaler le reste du côté positif.
À l'inverse, si un langage renvoie des restes négatifs et que le résultat souhaité est un nombre positif, l'extrait de code suivant peut être utilisé :
<code class="java">int r = x % n; if (r < 0) { r += n; }</code>
Ce code vérifie si r est négatif et y ajoute n en conséquence, garantissant un reste positif.
Comprendre ces différentes définitions et fournir la modification de code appropriée permet aux programmeurs d'obtenir les résultats de module souhaités avec nombres négatifs en Java.
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!