Maison > Java > javaDidacticiel > le corps du texte

Pourquoi l'opérateur de module Java donne-t-il un résultat négatif pour les nombres négatifs ?

Mary-Kate Olsen
Libérer: 2024-10-26 12:33:29
original
549 Les gens l'ont consulté

Why Does Java's Modulus Operator Yield a Negative Result for Negative Numbers?

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)
Copier après la connexion

Par exemple, dans le cas de "-13 % 64" :

-13 - (floor(-13 / 64) * 64)
= -13 - (-1 * 64)
= -13 + 64
= -13
Copier après la connexion

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>
Copier après la connexion

À 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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal