Понимание оператора остатка - PullRequest
       28

Понимание оператора остатка

0 голосов
/ 21 сентября 2018

Просто выполняю некоторые основные операции по модулю и пытаюсь обернуть мою голову нижеприведенными операциями с вопросительными знаками.

0%5 // 0 - Totally understand
1%5 // 1 ?
2%5 // 2 ?
3%5 // 3 ?
4%5 // 4 ?
5%5 // 0 - Totally understand

Возможно, я ошибаюсь.Например, 1/5 вернет Double 0,2, а не один integer, так как же он возвращает остаток 1?

Я понимаю это.Это имеет смысл, но выше я не могу обернуть голову.

9%4   // 1
10%2  // 0
10%6  // 4

Замечательно, если кто-то может это объяснить.Кажется, у меня пердит мозг. Источник обучения .

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Это / оператор деления, когда вы говорите 1/5, если деление целочисленное, оно даст 0, но это 1.0/0.5, когда вы сделаете это в Double, оно даст 0.2

но % оператор по модулю, когда вы говорите 1%5 = 1, потому что у вас есть 1 = 0*5 + 1, что означает, что 1 имеет нулевое число 5, а напоминание - 1

0 голосов
/ 21 сентября 2018

С той же страницы основных операторов , на которую вы ссылаетесь:

Оператор остатка (a % b) определяет, сколько кратных b поместится внутри a и возвращает значение, которое осталось (известно как остаток).

Специально для 1 % 5:

5 не помещается в 1,так что он подходит 0 раз.

Это означает, что 1 можно описать как

1 = (5 * multiplier) + remainder

Поскольку множитель равен 0, remainder равен 1

1 = (5 * 0) + remainder
1 = remainder

Если мы вместо этого посмотрим на 6 % 5, то остаток также будет 1.Это потому, что 5 вписывается в 6 один раз:

6 = (5 * multiplier) + remainder
6 = (5 * 1) + remainder
6-5 = remainder
1 = remainder
...