Maison >Java >javaDidacticiel >Pourquoi l'opérateur Modulo de Java donne-t-il des valeurs négatives pour les nombres négatifs ?

Pourquoi l'opérateur Modulo de Java donne-t-il des valeurs négatives pour les nombres négatifs ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-03 20:48:03433parcourir

Why Does Java's Modulo Operator Yield Negative Values for Negative Numbers?

Valeurs de module négatives en Java

Question originale :

Lors de l'utilisation de l'opérateur modulo dans Java, les nombres négatifs entraînent parfois une valeur négative. Par exemple, calculer int i = -1 % 2 donne -1, alors qu'en Python, ce même calcul renvoie 1.

Explication :

La différence de comportement entre Java et Python découlent de la distinction entre les opérations de module et de reste. En Python, l'opérateur % effectue l'opération de module, qui renvoie toujours un résultat positif, même pour une entrée négative. En revanche, l'opérateur % de Java calcule le reste, qui peut être négatif pour une entrée négative.

Solution :

Pour obtenir le même comportement que l'opération modulo de Python en Java, on peut suivre ces approches :

  1. Utiliser le module de manière positive :
<code class="java">int i = (((-1 % 2) + 2) % 2);</code>

Dans cette expression, l'opération de module est d'abord effectuée dans le parenthèses, ce qui donne une valeur négative. L'ajout de 2 déplace le résultat dans la plage positive et une opération de module finale garantit qu'il se situe dans la plage [0, 1].

  1. Vérification de la négativité :
<code class="java">int i = -1 % 2;
if (i < 0) i += 2;</code>

Ici, l'opération de module avec un nombre négatif est évaluée en premier. Si le résultat est négatif, il est incrémenté de 2 pour obtenir le module positif.

Le choix de l'approche dépend des besoins spécifiques et de la facilité d'intégration dans la base de code existante.

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