Home  >  Article  >  Java  >  Why Does -1 % 2 Return -1 in Java, but 1 in Python?

Why Does -1 % 2 Return -1 in Java, but 1 in Python?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 04:04:28985browse

Why Does -1 % 2 Return -1 in Java, but 1 in Python?

Modulo Operations in Java: Why Positive and Negative Numbers Matter

When performing modulo operations in Java, understanding the subtle difference between the modulus and the remainder is crucial. Unlike Python, Java's modulo operator (%) computes the remainder, not the modulus.

Consider the example provided in the question: -1 % 2 in Java returns -1, while in Python, it returns 1. This is because Python calculates the modulus, which always yields a non-negative value, while Java calculates the remainder, which preserves the sign of the first operand (-1 in this case).

To obtain the same behavior as Python, you can employ the following techniques:

  • Addition and modulo: Add 2 to the negative result and then apply the modulo again. This operation ensures that the result is always positive:
<code class="java">int i = (((-1 % 2) + 2) % 2)</code>
  • Conditional increment: Initialize the result to the original remainder, and if it's negative, add 2:
<code class="java">int i = -1 % 2;
if (i < 0) i += 2;</code>

Remember, these techniques apply whenever you need to compute the modulus of negative numbers in Java. While the operators in Python and Java may have the same symbol (%), they behave differently, leading to potential confusion if you're transitioning between languages.

The above is the detailed content of Why Does -1 % 2 Return -1 in Java, but 1 in Python?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn