Понимание оператора остатка
Просто выполняю некоторые базовые операции по модулю и пытаюсь обернуть мою голову нижеприведенными операциями с вопросительными знаками.
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 ответа
На той же странице " Основные операторы", на которую вы ссылаетесь:
Остаток оператора (
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
Это / оператор деления, когда вы говорите 1/5
если деление в целое число, оно даст 0
, но это 1.0/0.5
когда вы сделаете это в Double, это даст 0.2
но % оператор по модулю, когда вы говорите 1%5 = 1
потому что у вас есть 1 = 0*5 + 1
это означает, что 1 имеет нулевое число 5
и напоминание 1