Maison >Java >javaDidacticiel >Pourquoi l'opérateur Modulo de Java donne-t-il des valeurs négatives pour les nombres négatifs ?
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 :
<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].
<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!