В этом руководстве вы узнаете об операторе в JavaScript( %
), позволяющем получить остаток от деления числа на другое число.
- Введение в оператор остатка JavaScript
- Примеры операций взятия остатка в JavaScript
- 1) Использование оператора остатка с положительным примером делимого
- 2) С примером отрицательного делимого
- 3) Специальные значения оператора остатка
- Использование оператора остатка для проверки, является ли число нечетным
- Разница между оператором остатка и оператором по модулю
Введение в оператор остатка JavaScript
JavaScript использует %
для представления оператора остатка от деления. Оператор остатка возвращает остаток, оставшийся после деления одного значения на другое значение.
Вот синтаксис:
dividend % divisor
Ниже показано уравнение:
dividend = divisor * quotient + remainder where |remainder| < |divisor|
В этом уравнении dividend
, divisor
, quotient
и remainder
являются целыми числами. Знак remainder
такой же, как и знак dividend
.
Знак remainder
такой же, как и знак dividend
.
Примеры операций взятия остатка в JavaScript
Давайте рассмотрим несколько примеров использования.
1) Использование оператора остатка с положительным примером делимого
В следующем примере показано, как использовать с положительным делимым:
let remainder = 5 % -2; console.log(remainder); // 1 remainder = 5 % 2; console.log(remainder); // 1
2) С примером отрицательного делимого
В следующем примере используется оператор остатка с отрицательным делимым:
let remainder = -5 % 3; console.log(remainder); // -2 remainder = -5 % -3; console.log(remainder); // -2
3) Специальные значения оператора остатка
Если делимое — это Infinity
, а делитель — конечное число, остаток равен NaN
. Например:
let remainder = Infinity % 2; console.log(remainder); // NaN
Если делимое является конечным числом, а делитель равен нулю, остаток равен NaN
:
let remainder = 10 % 0; console.log(remainder); // NaN
Если и делимое, и делитель равны Infinity
, остаток равен NaN
:
let remainder = Infinity % Infinity; console.log(remainder); // NaN
Если делимое — конечное число, а делитель — Infinity
, остаток — это делимое:
let remainder = 10 % Infinity; console.log(remainder); // 10
Если делимое равно нулю, а делитель отличен от нуля, остаток равен нулю:
let remainder = 0 % 10; console.log(remainder); // 0
Если делимое или делитель не являются числом, они преобразуются в число с помощью функции Number()
и применяются указанные выше правила.
Пример:
let remainder = '10' % 3; console.log(remainder); // 1
Использование оператора остатка для проверки, является ли число нечетным
Чтобы проверить, является ли число нечетным, вы используете оператор остатка( %
), как в следующем примере:
let num = 13; let isOdd = num % 2;
В этом примере, если num
является нечетным числом, остаток равен единице. Но если num
четное, то остаток равен нулю.
Позже вы узнаете, как определить функцию, которая возвращает true
, если число нечетное или false
, в противном случае, например:
function isOdd(num) { return num % 2; }
Или с помощью функции стрелки в ES6:
const isOdd =(num) => num % 2;
Разница между оператором остатка и оператором по модулю
В JavaScript оператор остатка(%) не является оператором по модулю.
Если вы работали с Python, вы можете обнаружить, что %
представляет оператор по модулю в этом языке. Однако в JavaScript это не так.
Чтобы получить модуль в JavaScript, вы используете следующее выражение:
((dividend % divisor) + divisor) % divisor
Или оберните его в функцию:
const mod =(dividend, divisor) =>((dividend % divisor) + divisor) % divisor;
Если деление и делитель имеют одинаковый знак, операторы остатка и модуля возвращают одинаковый результат. В противном случае они возвращают разные результаты.
Например:
const mod =(dividend, divisor) =>((dividend % divisor) + divisor) % divisor; console.log('remainder:', 5 % 3); // 2 console.log('modulo:', mod(5, 3)); // 2 // dividen and divisor have the different signs console.log('remainder:', -5 % 3); // -2 console.log('modulo:', mod(-5, 3)); // 1
Выход:
remainder: 2 modulo: 2 remainder: -2 modulo: 1