Почему выводит true?

Все никак не могу понять почему выводит true, а не false. Ведь 1 поделить на 2 = 0.5. Т.е не 0 и не 1.

const testNum = (num) => {
    if (num % 2 === 0 || num % 2 === 1) {
        return true
    } else {
        return false
    }
};

console.log(testNum(1));


Ответы (1 шт):

Автор решения: Алексей Шиманский

Ведь 1 поделить на 2 = 0.5

Если поделить 1 на 2 результат будет действительно 0.5

Однако в примере num % 2 === 0 || num % 2 === 1 нет ни единого знака деления, а знак % - это взятие остатка от деления, а не само деление.

Например при делении 4 на 3, будет (по-школьному):

   4  | 3
-  --  ------
   3
   --
   1

т.е. остаток 1


При взятии остатка из двух чисел, где первое число меньше второго - очевидно будет возвращаться первое число (если второе не дробное, например, а первое - целое). Потому что остаток обычно остаётся при применении оператора к большему числу.

1%2 --> 1
1%242 --> 1
1%2234324 --> 1
1%87623487 --> 1

5%234 ---> 5
5%666 ---> 5
5%22398234 ---> 5

111%112 ---> 111
111%12342312 ---> 111
111%1986412 ---> 111

и т.д.
→ Ссылка