Calculs de module Java avec des nombres négatifs
En Java, l'opérateur de module (%) calcule le reste après division. Cependant, le traitement des nombres négatifs dans les calculs de module peut prêter à confusion.
Le problème
Un utilisateur a rencontré un écart dans le résultat de "-13 % 64" dans Java, s'attendant à ce que le résultat soit 51 mais obtenant à la place -13. Ils se sont demandé si leur implémentation du module était incorrecte.
L'explication
Java suit la définition mathématique du module pour les nombres négatifs, qui peut différer des autres langages de programmation. Dans la plupart des cas, le module d'un nombre négatif est défini comme :
a % b = a - (floor(a / b) * b)
Par exemple, dans le cas de "-13 % 64" :
-13 - (floor(-13 / 64) * 64) = -13 - (-1 * 64) = -13 + 64 = -13
Possible Solutions
Si le résultat souhaité est un nombre positif pour des entrées négatives, il peut être obtenu avec cette modification :
<code class="java">int r = x % n; if (r > 0 && x < 0) { r -= n; }</code>
À l'inverse, si le résultat souhaité est un nombre négatif pour entrées négatives, la modification suivante peut être utilisée :
<code class="java">int r = x % n; if (r < 0) { r += n; }</code>
Ces modifications ajustent le résultat en fonction du signe de l'entrée et du résultat souhaité.
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!