Какой-либо может объяснять мне, как функционирует оператор %
: Что? Какова логика за этим оператором? Чем является то, что он делает и что является тем, что он возвращает?
Например, следующий код в Java (хотя он стоил бы в других языках похожей нотации):
char calculaLetra(int dni)
{
String juegoCaracteres="TRWAGMYFPDXBNJZSQVHLCKE";
int modulo= dni % 23;
char letra = juegoCaracteres.charAt(modulo);
return letra;
}
[Вопрос, появившийся в чате SOes.]
Оператор %
он называет его оператором модуля.
Хорошее простое определение может находиться в документации для этого оператора в C#:
Оператор % вычисляет оставшуюся часть, разделив первого действуя из-за второго.
Например, давайте говорить, что ты вычисляешь следующее деление:
10 ÷ 3
Очевидно, результат 3.333333....
или в других словах, 3
с остатком 1
. Этот остаток - результат, оператор модуля использует:
10 % 3 = 1
Хотя я не знаю точно, как различные языки выполняют этот оператор внутри, эквивалентный способ это выражать в этих языках:
// Asumiendo que "n1" y "n2" son enteros (int), esta sentencia
int restante = n1 % n2;
// equivale a...
int restante = n1 - (n1 / n2 * n2);
Когда полезно использовать этот оператор?
У этого оператора есть много использований.
Смоги быть полезным, когда у тебя есть целое любое число, и ты нуждаешься в том, чтобы преобразовать это в целое число внутри более маленького интервала. hash tables используют эту технику внутри. Например, исходя из положительного целого числа n
, тебе нужно, чтобы он возвратил тебе целое число между 1
и 5
. Этого могут добиваться так:
int resultado = (n % 5) + 1;
Другой типичный пример, - когда ты хочешь проверить, - пара ли целое число или нечетный:
if (n % 2 == 0) {
System.out.println("par!");
} else {
System.out.println("impar!");
}
Поскольку хорошо они прокомментировали тебе в остальных ответах, возврати оставшуюся часть деления.
Он хотел комментировать тебе, что очень общее использование для этого оператора - деление arrays в равных группах используя циклы for. Случай - уже прокомментированный в других ответах пар / нечетные, а именно, в группах двух. Но это может распространяться на группы 3, 4... Например, мы должны производить колоду карт 40 писем и инициализировать всю Вашу стоимость. В цикле от 0 до 39, деление i / 4 даст нам такую серию как эта: 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3... до 9. И модуль i % 4 даст нам такую серию как эта: 0 1 2 3 0 1 2 3 0 1 2 3... Эта стоимость позволяет нам создавать письма (стоимость, палка):
(0, 0), (0, 1), (0, 2), (0,3) -> donde 0 equivale a Oros, 1 a Copas...
(1, 0), (1, 1), (1, 2), (1,3)
...
(9, 0), (9, 1), (9, 2), (9,3)
Здесь у тебя есть пример кода в C#:
public class Baraja
{
public Carta[] NuevaBaraja()
{
Carta[] baraja = new Carta[40];
for (int i = 0; i < 40; i++)
{
Carta carta = new Carta();
carta.Valor = i / 4;
carta.Palo = (Palos)(i % 4);
baraja[i] = carta;
}
return baraja;
}
}
public class Carta
{
public int Valor { get; set; }
public Palos Palo { get; set; }
}
public enum Palos
{
Oros,
Copas,
Espadas,
Bastos
}
Действующие % возвращает тебе оставшуюся часть ее divisiГіn между дивидендом (то, что слева от оператора) и делитель (делитель правой стороны).
Различие с оператором / что возвращает тебе частное
В твоем примере разделяет число dni по 23 и дает тебе оставшуюся часть, что остается даже она prГіxima divisiГіn точная из-за 23 (пример 24 % 23 = 1).
С этим nГєmero подбирает букву, которая соответствует в array
juegoCaracteres
, которые у тебя есть.
Оператор %
он - арифметический оператор и представляет деление между целыми числами.
Например, если ты делишь 10/3
это обычно = 3.33333334, с помощью %
в программировании ты получишь такой 1 как ответ на это деление: Почему?
10 : 3 = 3
-9 (3 x 3) y 10-9 = 1.
1.
Твой остаток 1 в отличие от результата нормального деления. То, что возвращает этот оператор, так это остаток этого деления!. Есть случаи, в которых нам хотелось бы знать например четные числа, не интересует нас знать все разы может разделять число в другой, если не скорее этот точный результат.
10 : 2 = 5
-10 (5 x 2 = 10)
0
Наш остаток 0
следовательно, если это четное число, так как нет оставшейся части, которой мы не можем манипулировать.
В твоем особенном случае ты нуждаешься в том, чтобы узнать остаток деления, чтобы получать char внутри твоего string.
dividendo - Math.floor(dividendo/divisor) * divisor
– Jose Hermosilla Rodrigo 03.11.2016, 15:50n1
иn2
int
s, так что деление заканчивается целым числом. – sstan 03.11.2016, 15:56