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

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

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

Другие вопросы по тегам