JavaScript | Как проверить на нечётное?

JavaScript | Как проверить на нечётное?

 

Как узнать, является ли число нечётным?

Для начала вспомним какое число называют нечётным.

Нечётное число — это целое число, которое НЕ делится на 2 без остатка.

Чтобы проверить число на нечётное, мы можем воспользоваться одним из мультипликативных операторов — % (знак процента). Этот оператор возвращает остаток от деления.

Нам нужно проверить, чтобы 2 условия вернули истину true:

  1. Остаток от деления на 1 равен нулю (так мы отберём все целые — все те, которые не дробные)
  2. Остаток от деления на 2 не равен нулю (так мы отберём все из целых, которые нечётные)

Вид условия:

(i % 1 == 0 && i % 2 != 0)

Проверим на примере:

(5 % 1 == 0 && 5 % 2 != 0)
true

(7.77 % 1 == 0 && 7.77 % 2 != 0)
false

(2 % 1 == 0 && 2 % 2 != 0)
false

(4.44 % 1 == 0 && 4.44 % 2 != 0)
false

 

Тест в консоли браузера:

Два условия проверки на нечётное - JavaScript
Два условия проверки на нечётное — JavaScript

 

Альтернативное решение задачи

Если число будет нечётным, тогда при делении его на 2 мы будем получать 1 (один). То есть остаток от деления будет равен единице.

Мультипликативное выражение будет выглядеть так:

x % 2

Теперь мы можем протестировать на реальных примерах наше условие. Оно будет работать если левые числа в выражении будут целыми.

10 % 2 != 0
false

-22 % 2 != 0
false

5 % 2 != 0
true

13 % 2 != 0
true

true означает то, что левое число является нечётным

false означает то, что левое число является чётным

Проверили на нечётное - JavaScript
Проверили на нечётное — JavaScript

Но тут есть маленькая загвоздка. А что если передать дробное число?

11.1 % 2 != 0
true

3.33 % 2 != 0
true

Наше выражение даст сбой если передаваемые числа будут дробными. А значит их остаток от деления тоже будет дробным — не ноль.

 

Дробный остаток от деления - JavaScript
Дробный остаток от деления — JavaScript

Нам нужна проверка числа на целое. В JavaScript это можно сделать таким образом:

(Number.isInteger(ТВОЁ_ЧИСЛО) == true)

Теперь мы можем подставить эту конструкцию в выражение

if(Number.isInteger(x) == true){return x % 2 != 0}else{return undefined}

 

Функция проверки числа на НЕЧЁТНОЕ

Проверку этого условия можно обернуть в функцию:

function odd(x){
   if(Number.isInteger(x) == true){return x % 2 != 0}else{return undefined}
}

Пример работы функции:

odd(10)
false

odd(11)
true

odd(10.5)
undefined

odd(11.1)
undefined

odd(2)
false

odd(3)
true

Скрин из консоли браузера:

 

Функция проверки числа на НЕЧЁТНОЕ - JavaScript
Функция проверки числа на НЕЧЁТНОЕ — JavaScript

 

На английском языке

«even» — чётное

«odd» — нечётное

 

Другой способ проверить на нечётное

Можно использовать двоичный побитовый оператор AND — &. Если мы будем сопоставлять любое десятичное целое число с единицей, то в двоичной системе мы будем получать первый бит логической операции «И».

Например:

10 & 1 вернёт нам 0
11 & 1 вернёт нам 1

В этом случае проверка на чётное будет выглядеть так:

(x & 1) == 1

Пример с условием:

(5 & 1) == 1
true

(4 & 1) == 1
false

 

Информационные ссылки

JavaScript | Как проверить на чётное?

JavaScript | Как проверить число на целое?

JavaScript | Мультипликативные операторы

JavaScript | Алгоритмические обозначения

JavaScript | Условные обозначения

Стандарт ECMAScript — Раздел «13.7 Multiplicative Operators» — https://tc39.es/ecma262/#sec-multiplicative-operators