javascript остаток от деления

Оператор % возвращает целый остаток от деления левого операнда на правый.

— константа, переменная, функция, выражение и другой объект языка программирования, над которым производятся операции. В примере задания, левый и правый операнд — это числа.

Пример

5 % 2 = 1 потому, что
Math.floor(5 / 2) = 2 (частное)
2 * 2 = 4
5 — 4 = 1 (остаток)

Применение
Например, в математике, число может быть проверено на четность, если остаток от деления числа на 2 равно 0.

17 % 2 = 1 (17 нечетное)
48 % 2 = 0 (48 четное)

Заметим
В JavaScript оператор не является оператаром «модуля». Он очень похож на модуль, но не работает должным образом с отрицательными числами, так как в результате берется знак делимого, а не делителя

Задание

При объявлении переменной remainder , присвойте значение равное числу 11 разделенному на 3 при помощи оператора ( % ).

Многие операторы знакомы нам ещё со школы: сложение + , умножение * , вычитание — и так далее.

В этой главе мы сконцентрируемся на операторах, которые в курсе математики не проходят.

Термины: «унарный», «бинарный», «операнд»

Прежде, чем мы двинемся дальше, давайте разберёмся с терминологией.

Операнд – то, к чему применяется оператор. Например, в умножении 5 * 2 есть два операнда: левый операнд равен 5 , а правый операнд равен 2 . Иногда их называют «аргументами» вместо «операндов».

Унарным называется оператор, который применяется к одному операнду. Например, оператор унарный минус «-» меняет знак числа на противоположный:

Бинарным называется оператор, который применяется к двум операндам. Тот же минус существует и в бинарной форме:

Формально мы говорим о двух разных операторах: унарное отрицание (один операнд: меняет знак) и бинарное вычитание (два операнда: вычитает).

Сложение строк, бинарный +

Давайте посмотрим специальные возможности операторов JavaScript, которые выходят за рамки школьной математики.

Обычно при помощи плюса ‘+’ складывают числа.

Но если бинарный оператор ‘+’ применить к строкам, то он их объединяет в одну:

Обратите внимание, если хотя бы один операнд является строкой, то второй будет также преобразован к строке.

Причём не важно, справа или слева находится операнд-строка. Правило простое: если хотя бы один из операндов является строкой, то второй будет также преобразован к строке.

Тем не менее, помните, что операции выполняются слева направо. Если перед строкой идут два числа, то числа будут сложены перед преобразованием в строку:

Сложение и преобразование строк – это особенность бинарного плюса + . Другие арифметические операторы работают только с числами и всегда преобразуют операнды в числа.

Например, вычитание и деление:

Преобразование к числу, унарный плюс +

Плюс + существует в двух формах: бинарной, которую мы использовали выше, и унарной.

Унарный, то есть применённый к одному значению, плюс + ничего не делает с числами. Но если операнд не число, унарный плюс преобразует его в число.

На самом деле это то же самое, что и Number(. ) , только короче.

Необходимость преобразовывать строки в числа возникает очень часто. Например, обычно значения полей HTML-формы – это строки. А что, если их нужно, к примеру, сложить?

Бинарный плюс сложит их как строки:

Поэтому используем унарный плюс, чтобы преобразовать к числу:

С точки зрения математика, такое изобилие плюсов выглядит странным. Но с точки зрения программиста – ничего особенного: сначала выполнятся унарные плюсы, приведут строки к числам, а затем – бинарный ‘+’ их сложит.

Почему унарные плюсы выполнились до бинарного сложения? Как мы сейчас увидим, дело в их приоритете.

Приоритет операторов

В том случае, если в выражении есть несколько операторов – порядок их выполнения определяется приоритетом, или, другими словами, существует определённый порядок выполнения операторов.

Из школы мы знаем, что умножение в выражении 2 * 2 + 1 выполнится раньше сложения. Это как раз и есть «приоритет». Говорят, что умножение имеет более высокий приоритет, чем сложение.

Скобки важнее, чем приоритет, так что если мы не удовлетворены порядком по умолчанию, мы можем использовать их, чтобы изменить приоритет. Например, написать (1 + 2) * 2 .

В JavaScript много операторов. Каждый оператор имеет соответствующий номер приоритета. Тот, у кого это число больше – выполнится раньше. Если приоритет одинаковый, то порядок выполнения – слева направо.

Отрывок из таблицы приоритетов (нет необходимости всё запоминать, обратите внимание, что у унарных операторов приоритет выше, чем у соответствующих бинарных):

Приоритет Название Обозначение
16 унарный плюс +
16 унарный минус
14 умножение *
14 деление /
13 сложение +
13 вычитание
3 присваивание =

Так как «унарный плюс» имеет приоритет 16 , который выше, чем 13 у «сложения» (бинарный плюс), то в выражении «+apples + +oranges» сначала выполнятся унарные плюсы, а затем сложение.

Присваивание

Давайте отметим, что в таблице приоритетов также есть оператор присваивания = . У него один из самых низких приоритетов: 3 .

Именно поэтому, когда переменной что-либо присваивают, например, x = 2 * 2 + 1 , то сначала выполнится арифметика, а уже затем произойдёт присваивание = .

Оператор Тип оператора А О Типы значений
… + …
… — …
… * …
… / …
… % …
… ** …
Сложение
Вычитание
Умножение
Деление
Деление с остатком
Возведение в степень
слева направо
слева направо
слева направо
слева направо
слева направо
справа налево
2
2
2
2
2
2
число, число → число
число, число → число
число, число → число
число, число → число
число, число → число
число, число → число

Операторы: — ( вычитание ), + ( сложение ), * ( умножение ) и / ( деление ) работают точно так же, как и арифметические действия в математике. Оператор % ( деление с остатком ) возвращает остаток от деления первого операнда на второй. Результат деления с остатком будет иметь тот же знак, что и первый операнд:

Оператор ** ( возведение в степень ) имеет два операнда. Первый операнд является основанием степени, второй операнд – показателем степени, в результате оператор возвращает основание, возведённое в указанную степень:

Все математические операторы преобразуют операнды по тем же правилам, что и функция Number().

Унарные + (плюс) и — (минус)

Оператор Тип оператора А О Типы значений
— …
+ …
Унарный минус
Унарный плюс
справа налево
справа налево
1
1
число → число
число → число

Оператор + ( унарный плюс ) преобразует значение своего операнда в число и возвращает преобразованное значение. При использовании с числовым операндом он не выполняет никаких действий:

Оператор — ( унарный минус ) преобразует значение своего операнда в число, если это необходимо, и затем делает число отрицательным:

Унарные плюс и минус преобразуют операнды по тем же правилам, что и функция Number().

Инкремент и декремент

Оператор Тип оператора А О Типы значений
… ++
… —
++ …
— …
Постфиксный инкремент
Постфиксный декремент
Префиксный инкремент
Префиксный декремент
отсутствует
отсутствует
справа налево
справа налево
1
1
1
1
lval → число
lval → число
lval → число
lval → число

Оператор ++ ( инкремент ) увеличивает значение своего операнда на единицу. Если значение операнда не является числом, оператор автоматически преобразует его в число, увеличивает на единицу и возвращает результат, который присваивается обратно операнду.

Инкремент имеет две формы – постфиксную (оператор ставится после операнда) и префиксную (оператор ставится перед операндом). Если он используется в постфиксной форме, то сначала возвращается исходное значение операнда, и только затем значение операнда увеличивается на единицу:

В префиксной форме оператор инкремент сразу увеличивает значение своего операнда на единицу:

Оператор — ( декремент ) работает аналогично оператору инкремент, но не увеличивает значение своего операнда, а наоборот, уменьшает его на единицу:

Инкремент и декремент преобразуют операнды по тем же правилам, что и функция Number().

Оцените статью
SoftLast
Добавить комментарий