Maison >Java >javaDidacticiel >## Pourquoi l'opérateur de module Java (%) renvoie-t-il des résultats négatifs pour les nombres négatifs ?

## Pourquoi l'opérateur de module Java (%) renvoie-t-il des résultats négatifs pour les nombres négatifs ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 12:39:30305parcourir

## Why Does Java's Modulus Operator (%) Return Negative Results for Negative Numbers?

Calculs de module en Java : gestion des nombres négatifs

En Java, effectuer des opérations de module sur des nombres négatifs donne souvent des résultats inattendus. Lorsqu'on applique l'opérateur de module (%) sur un nombre négatif, on peut s'attendre à obtenir une valeur positive, mais dans certains cas, il renvoie un résultat négatif. Pour comprendre ce comportement, il est essentiel de se plonger dans le fonctionnement interne des calculs de module.

L'opérateur de module calcule le reste lors de la division d'un nombre par un autre. Pour les nombres positifs, le reste est systématiquement positif. Cependant, lorsqu'il s'agit de nombres négatifs, il existe deux définitions possibles du module :

  1. Module au sol : Cette définition arrondit le reste à l'entier le plus proche vers l'infini négatif.
  2. Module de troncature : Cette définition arrondit le reste à zéro (c'est-à-dire qu'elle élimine toute partie fractionnaire).

Java utilise la définition du module de troncature. Par conséquent, lorsqu’on divise un nombre négatif par un nombre positif, le reste est toujours négatif. Par exemple, -13 % 64 est évalué à -13 en Java car -13 est divisé par 64 sans aucune composante fractionnaire.

Si l'on souhaite un reste positif pour les entrées négatives, l'extrait de code suivant peut être utilisé :

<code class="java">int r = x % n;
if (r > 0 && x < 0) {
    r -= n;
}</code>

À l'inverse, si l'on préfère un reste négatif pour les entrées négatives, l'extrait de code suivant peut être utilisé :

<code class="java">int r = x % n;
if (r < 0) {
    r += n;
}</code>

Comprendre les différentes définitions du module est crucial lorsque l'on travaille avec des nombres négatifs dans différents langages de programmation. En comprenant les distinctions entre module plancher et module tronqué, les développeurs peuvent s'assurer que leur code se comporte comme prévu, en particulier lorsqu'il s'agit d'entrées négatives.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn