Разница между модулем и остатком - PullRequest
0 голосов
/ 01 октября 2019

Я делаю некоторые вычисления с оператором % в java и python.

При выполнении вычислений я обнаружил, что оператор % работает с обоими языками по-разному при работе с отрицательными числами.

Например,

-21 % 4 = -1   // Java

-21 % 4 = 3    # Python

, поэтому я посмотрел некоторые посты здесь на stackoverflow и обнаружил, что в java, % дает остаток , тогда как в python, % дает модуль ,Они оба одинаковы для положительных чисел, но дают другой результат в случае отрицательных чисел, как показано в примере выше.

Поэтому я искал разницу между modulus и Остаток Прочтите некоторые посты онлайн, но мне все еще не ясна разница между остатком и модулем

Вопрос

Может кто-нибудь объяснить разницу между modulus и remainder впростые термины, используя приведенный выше пример?

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

В отличие от C или C ++ или Java , оператор Python по модулю (%) всегда возвращает число, имеющее тот же знак, что и знаменатель (делитель).

Пример

(-5) % 4 = (-2 × 4 + 3) % 4 = 3.

( См. , как определяется знак результата для разных языков.)

0 голосов
/ 01 октября 2019

Реализация оператора по модулю отличается в Python и таких языках, как Java.

В Java у результата есть знак дивиденда, но в Python знак от делителя.

Для достижения результата Python в Java вы можете использовать:

(((n% m) + m)% m)

где n - дивиденд, а m - делитель.

int a = (((-21% 4) + 4) % 4);
    System.out.println(a);                //a=3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...