Арифметика в Javascript
Арифметические операторы используются для выполнения арифметических операций с числами (константами или переменными):
Оператор | Описание |
---|---|
+ | Сложение |
— | Вычитание |
* | Умножение |
/ | Деление |
% | Остаток от деления |
++ | Увеличение на 1 |
— | Уменьшение на 1 |
Арифметические операции
Типичная арифметическая операция осуществляется с двумя числами.
Этими числами могут быть константы:
var x = 100 + 50;
или переменные:
var x = a + b;
или выражения:
var x = (100 + 50) * a;
Операторы и операнды
Числа в арифметической операции называют операндами.
Операция, совершаемая между двумя операндами, называется оператор.
Операнд | Оператор | Операнд |
---|---|---|
100 | + | 50 |
Оператор сложения (+) вычисляет сумму чисел:
var x = 5; var y = 2; var z = x + y;
Оператор вычитания (-) вычисляет разницу чисел:
var x = 5; var y = 2; var z = x - y;
Оператор умножения (*) перемножает числа:
var x = 5; var y = 2; var z = x * y;
var x = 5; var y = 2; var z = x / y;
Оператор деления по модулю (%) возвращает остаток от деления двух чисел:
var x = 5; var y = 2; var z = x % y;
Оператор инкремента (++) увеличивает число на 1:
var x = 5; x++; var z = x;
Оператор декремента (—) уменьшает число на 1:
var x = 5; x--; var z = x;
Старшинство операторов
Старшинство операторов определяет порядок, в котором совершаются операции в арифметических выражениях.
Рассмотрим следующий пример:
var x = 100 + 50 * 3;
Какой результат мы получим? Как при вычислении 150 * 3 или 100 + 150?
Что вычисляется первым — сложение или умножение?
И здесь действуют те же правила, что и в обычной математике: умножение вычисляется первым.
Умножение (*) и деление (/) имеют более высокий приоритет, чем сложение (+) и вычитание (-).
И также как и в обычной математике старшинство можно изменить при помощи круглых скобок:
var x = (100 + 50) * 3;
В этом случае первым вычисляется операция, расположенная внутри круглых скобок.
Если у нескольких операций одинаковое старшинство (как у сложения и вычитания), то они вычисляются слева направо:
var x = 100 + 50 - 3;
Коэффициенты старшинства операторов в JavaScript:
Коэффициент | Оператор | Описание | Пример |
---|---|---|---|
20 | ( ) | Группирование выражений | (3 + 4) |
19 | . | Член объекта | person.name |
19 | [] | Член объекта или массива | person[«name»] |
19 | () | Вызов функции | myFunction() |
19 | new | Создание объекта | new Date() |
17 | ++ | Постфиксный инкремент | i++ |
17 | — | Постфиксный декремент | i— |
16 | ++ | Префиксный инкремент | ++i |
16 | — | Префиксный декремент | —i |
16 | ! | Логическое НЕ | !(x==y) |
15 | typeof | Тип | typeof x |
15 | ** | Возведение в степень | 10 ** 2 |
14 | * | Умножение | 10 * 5 |
14 | / | Деление | 10 / 18 |
14 | % | Деление по модулю | 10 % 5 |
13 | + | Сложение | 10 + 5 |
13 | — | Вычитание | 10 — 8 |
12 | << | Сдвиг влево | x << 2 |
12 | >> | Сдвиг вправо | x >> 2 |
12 | >>> | Сдвиг вправо (без знака) | x >>> 2 |
11 | < | Меньше чем | x < y |
11 | <= | Меньше или равно | x <= y |
11 | > | Больше чем | x > y |
11 | >= | Больше или равно | x >= y |
10 | == | Равенство | x == y |
10 | === | Строгое равенство | x === y |
10 | != | Неравенство | x != y |
10 | !== | Строгое неравенство | x !== y |
6 | && | Логическое И | x && y |
5 | || | Логическое ИЛИ | x || y |
3 | = | Присваивание | x = y |
3 | += | Присваивание | x += y |
3 | -= | Присваивание | x -= y |
3 | *= | Присваивание | x *= y |
3 | %= | Присваивание | x %= y |
3 | <<= | Присваивание | x <<= y |
3 | >>= | Присваивание | x >>= y |
3 | >>>= | Присваивание | x >>>= y |
3 | &= | Присваивание | x &= y |
3 | ^= | Присваивание | x ^= y |
3 | |= | Присваивание | x |= y |
Внимание! Выражения в круглых скобках полностью вычисляются до применения коэффициентов остальных выражений.
Как проверить на нечётное? — efim360.ru
Как узнать, является ли число нечётным?
Для начала вспомним какое число называют нечётным.
Нечётное число — это целое число, которое НЕ делится на 2 без остатка.
Чтобы проверить число на нечётное, мы можем воспользоваться одним из мультипликативных операторов — % (знак процента). Этот оператор возвращает остаток от деления.
Нам нужно проверить, чтобы 2 условия вернули истину true:
- Остаток от деления на 1 равен нулю (так мы отберём все целые — все те, которые не дробные)
- Остаток от деления на 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
Альтернативное решение задачи
Если число будет нечётным, тогда при делении его на 2 мы будем получать 1 (один). То есть остаток от деления будет равен единице.
Мультипликативное выражение будет выглядеть так:
x % 2
Теперь мы можем протестировать на реальных примерах наше условие. Оно будет работать если левые числа в выражении будут целыми.
10 % 2 != 0 false -22 % 2 != 0 false 5 % 2 != 0 true 13 % 2 != 0 true
true означает то, что левое число является нечётным
false означает то, что левое число является чётным
Проверили на нечётное — JavaScriptНо тут есть маленькая загвоздка. А что если передать дробное число?
11.1 % 2 != 0 true 3.33 % 2 != 0 true
Наше выражение даст сбой если передаваемые числа будут дробными. А значит их остаток от деления тоже будет дробным — не ноль.
Дробный остаток от деления — 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
На английском языке
«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
Объяснение целочисленного деления в JavaScript
В этом руководстве вы узнаете, как выполнить целочисленное деление в JavaScript. Оператор деления в JavaScript ( /
) делит два числа ( делимое и делитель ) и возвращает частное в виде числа с плавающей запятой (а не частное и остаток от деления по отдельности).
Все числа в JavaScript (кроме чисел BigInt) имеют тип Число
, представляющие числа с плавающей запятой, такие как 25
, 12,25
и -3,45
.
Например, вывод следующего выражения: 1,5
:
пусть результат = 9 / 6 // вывод: 1,5
Но если нужно найти частное от деления без запятой и дробной части, то нужно его округлить.
Посмотрим как.
Округление частного в целочисленном делении JS
Один из способов избавиться от дроби — преобразовать число с плавающей запятой в целое — с помощью функций Math.floor() и Math.ceil().
Функция Math.floor()
всегда округляет в меньшую сторону и возвращает наибольшее целое число, меньшее (или равное) заданному числу. Например, 1,5
станет 1
.
пусть результат = Math.floor (9 / 6) // вывод: 1
👇 Продолжить чтение
Однако есть ограничение; Этот подход работает только с положительными коэффициентами. Если дивиденд отрицательный, вы можете получить неожиданные результаты:
пусть результат = Math.floor (-9/ 6) // вывод: -2 (наибольшее целое *меньше* -1,5) // ожидаемый результат: -1
Причина в том, что Math.floor()
округляет до первого целого числа меньше -1.5
, а поскольку это отрицательное число, первое целое число меньше -1.5
равно -2
. Очевидно, это не то, чего мы хотим.
В качестве обходного пути можно использовать
для отрицательных частных.
В отличие от Math.floor()
, Math.ceil() 9Функция 0004 всегда округляет и возвращает меньшее целое число, большее или равное заданному числу.
Давайте создадим простую функцию и попробуем ее с разными параметрами:
функция intDivide (дивиденд, делитель) { пусть частное = делимое / делитель // Использовать Math.ceil, если частное отрицательное если (частное < 0) { вернуть Math.ceil(частное) } вернуть Math.floor (частное) } intDivide(9, 6) // вывод 1 intDivide(-9, 6) // вывод -1
Как насчет
Math.trunc()
? Math.trunc()
обрезает десятичную точку и дробную часть независимо от того, является ли данное число положительным или отрицательным.
Вот тест с некоторыми числами с плавающей запятой:
Math.trunc(-1.5) // -1 Math.trunc(-0.5) // -0 Math.trunc(-0) // -0 Math.trunc(0) // 0 Math.trunc(0.75) // 0 Math.trunc(25.65) // 25
Звучит как хорошая альтернатива первому подходу.
👇 Продолжить чтение
Возможно, вы захотите использовать parseInt()
для преобразования частного (в числах с плавающей запятой) в целое число. Однако использование функции parseInt
для усечения больших или малых чисел может привести к неожиданным результатам, поскольку эти числа часто содержат символ "e" в строковом представлении (например, 6,022e23 для 6,022 × 10 23 ).
Бонус Совет : Вы также можете добавить запятые к значению частного, чтобы сделать его более читаемым, если вы имеете дело с большими числами.
Использование побитового оператора
~~
для усечения чисел Побитовые операторы в JavaScript преобразуют свой операнд в 32-битное целое число. Некоторые разработчики используют оператор
как «более быструю» альтернативу функциям округления.
Но разница в скорости не так заметна. И производительность не гарантируется в разных браузерах.
Имейте в виду, что, поскольку ваше число преобразуется в 32-битное целое число, вы должны использовать его только в том случае, если данное число находится в диапазоне 32-битных целых чисел ( -2147483649
< значение < 2147483648
). В противном случае вы получите совершенно неожиданные результаты:
. пусть значение = ~~65,45 // ✅ вывод: 65 пусть значение = ~~2147483648 // 🚫 вывод: -2147483648 пусть значение = ~~-2147483649 // 🚫 вывод: 2147483647 пусть значение = ~~4294967296 // 🚫 вывод: 0
И вот как использовать функции Math.ceil()
, Math.floor()
или Math.trunc()
в целочисленном делении JS.
Надеюсь, это краткое руководство оказалось полезным для вас.
Спасибо за внимание!
Если вы дочитали до этого места, вы можете написать автору твит, чтобы показать ему, что вам не все равно. Tweet a Thank
Целочисленное деление и модуль — основы программирования
Кеннет Лерой Басби
Обзор
В целочисленном делении и по модулю делимое делится на делитель на целое частное и остаток. Операция целочисленного частного называется целочисленным делением, а операция целочисленного остатка — модулем. [1] [2]
Обсуждение
К тому времени, когда мы достигаем совершеннолетия, мы обычно думаем о делении как о результате результата, который может иметь дробную часть (тип данных с плавающей запятой). Этот тип деления известен как деление с плавающей запятой. Однако деление, когда оба операнда имеют целочисленный тип данных, может действовать по-разному, в зависимости от языка программирования, и называется:
11 / 4
Поскольку оба операнда имеют целочисленный тип данных, оценка выражения (или ответа) будет равна 2 без дробной части (оно отбрасывается). Опять же, этот тип деления называется целочисленное деление и это то, чему вы научились в начальной школе, когда впервые узнали о делении.
Целочисленное деление, как учили в начальной школе.В реальном мире манипулирования данными есть вещи, которые всегда обрабатываются целыми единицами или числами (целочисленный тип данных). Дробей просто не существует. Чтобы проиллюстрировать наш пример: у меня есть 11 долларовых монет, которые нужно раздать поровну моим 4 детям. Сколько получит каждый? Ответ: 2, при этом у меня еще осталось 3 (или еще 3 в руке). Ответ не 2 ¾ на каждого или 2,75 на каждого ребенка. Долларовые монеты не делятся на дробные части. Не пытайтесь мыслить нестандартно и притворяться пиратом. Используя топор, разрубите 3 оставшиеся монеты на части по восемь штук. Затем, давая каждому ребенку по 2 монеты и 6 штук по восемь, или 2 6/8, или 2 ¾, или 2,75. Если вы действительно так думаете, я поменяю свой пример на банки томатного супа. Я предлагаю вам попробовать нарезать три банки супа и дать каждому ребенку по ¾ банки. Еще лучше, живые существа, такие как щенки. После того, как вы разделите их топором, большинство детей не захотят ¾ собаки.
Что такое модуль ? Это другая часть ответа для целочисленного деления. Это остаток. Помните, в начальной школе вы говорили: «Одиннадцать разделить на четыре равно двум остатку три». Во многих языках программирования символом оператора модуля является знак процента (%).
11 % 4
Таким образом, ответ или значение этого выражения равно 3 или остатку целочисленного деления.
Многие компиляторы требуют, чтобы у вас были целочисленные операнды с обеих сторон оператора модуля, иначе вы получите ошибку компилятора. Другими словами, нет смысла использовать оператор модуля с операндами с плавающей запятой.
Пусть вас не смущают следующие предметы.
6 / 24 отличается от 6 % 24
Сколько раз можно разделить 24 на 6? Шесть разделить на 24 равно нулю. Это отличается от: Какой остаток от деления 6 на 24? Шесть, остальная часть дается по модулю.
Вычислите следующие выражения деления:
- 14/4
- 5 / 13
- 7/2,0
Оцените следующие выражения модуля:
- 14 % 4
- 5 % 13
- 7 % 2,0
Основные термины
- целочисленное деление
- Деление без дробных частей.