Как оно функционирует действующие %?

Какой-либо может объяснять мне, как функционирует оператор %: Что? Какова логика за этим оператором? Чем является то, что он делает и что является тем, что он возвращает?

Например, следующий код в Java (хотя он стоил бы в других языках похожей нотации):

char calculaLetra(int dni) 
{ 
    String juegoCaracteres="TRWAGMYFPDXBNJZSQVHLCKE"; 
    int modulo= dni % 23; 
    char letra = juegoCaracteres.charAt(modulo); 
    return letra; 
}

[Вопрос, появившийся в чате SOes.]

10
задан 03.11.2016, 15:29
5 ответов

Оператор % он называет его оператором модуля.

Хорошее простое определение может находиться в документации для этого оператора в 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!");
}
16
ответ дан 24.11.2019, 12:45
  • 1
    Быть и # 237; в dividendo - Math.floor(dividendo/divisor) * divisor – Jose Hermosilla Rodrigo 03.11.2016, 15:50
  • 2
    @Jose: Especifiqu и # 233; что n1 и n2 int s, так что деление заканчивается целым числом. – sstan 03.11.2016, 15:56
  • 3
    Верный! Извини беспокойство. – Jose Hermosilla Rodrigo 03.11.2016, 16:00
  • 4
    @Jose: Никакое беспокойство. Я оцениваю такие все конструктивные комментарии как твои.:) – sstan 03.11.2016, 16:02
  • 5
    Также он используется в алгоритме для того, чтобы превращать числа в Ваше представление как String (String format), что-то, что мы делаем все время и в тот, что мы это используем, не зная этого. – rnrneverdies 08.11.2016, 17:13

Поскольку хорошо они прокомментировали тебе в остальных ответах, возврати оставшуюся часть деления.

Он хотел комментировать тебе, что очень общее использование для этого оператора - деление 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
    }
3
ответ дан 24.11.2019, 12:45

Действующие % возвращает тебе оставшуюся часть ее divisiГіn между дивидендом (то, что слева от оператора) и делитель (делитель правой стороны).

Различие с оператором / что возвращает тебе частное

В твоем примере разделяет число dni по 23 и дает тебе оставшуюся часть, что остается даже она prГіxima divisiГіn точная из-за 23 (пример 24 % 23 = 1).

С этим nГєmero подбирает букву, которая соответствует в array juegoCaracteres, которые у тебя есть.

2
ответ дан 24.11.2019, 12:45

Оператор % он - арифметический оператор и представляет деление между целыми числами.

Например, если ты делишь 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.

2
ответ дан 24.11.2019, 12:45

с оператором / ты делишь: например 6/4=1 в отличие от оператора % ты получаешь остаток ее divisiГіn например 6%4=2

0
ответ дан 24.11.2019, 12:45