Я не совсем понимаю, как работает модульное деление. Я рассчитывал 5% 6 и получил 5, и я не понимаю, почему. Я понимаю модуль без десятичных значений. E. G 16% 3 = 5 r 1.Понимая модуль
ответ
Проблема с вашими расчетами 5 % 6
заключается в том, что она ВСЕГДА даст вам остаток 5. Если вы пробовали 6 % 5
, это даст вам 1 ответ.
Это не вопрос программирования, поскольку модуль является математическим оператором, совершенно не уникальным для Java или любого языка программирования, но 5 mod 6 = 5, поскольку он является остатком после деления на 6 (5 < 6) остаток - 5). 6 мод 5 = 1, а 6> 5, так что вы отнимите 5, то вы остаетесь с 1 и 1 < 6.
Если это помогает, вот псевдокод иллюстрация модуля (для положительных целых чисел):
integer mod(integer a, integer b) {
if a < b:
return a
else:
return mod(a - b, b)
}
num1 % num2
оператор модуля делит num1 на num2 как целые числа (другими словами, все результаты деления закруглены вниз до ближайшего целого числа) и выводит остаток. В вашем случае, 5/6 = 0 с остатком 5.
Другим способом выражения остатка: num1 = x*num2 + R
где х является результатом целочисленного деления num1/num2
и R представляет собой остаток, который является выходом оператора модулей. Опять в вашем случае, 5 = 0*6 + 5
.
Оператор модуля похож на «остаток», но существуют технические особенности, которые делают его другим, когда задействованы отрицательные числа.
Однако, для вашего примера, подумайте о 5% 6 как о «оставшейся части 5, разделенной на 6». Прочитайте слева направо, точно так же, как разделение.
5 = 0x6 + 5, так что осталось 5. – Tunaki
Это ваша проблема 5% 6, разве это не 6% 5? – ryekayo
Это не имеет ничего общего с java. – HyperZ