Числа и математика
В JavaScript 0.1 + 0.2 даёт 0.30000000000000004, а 17 % 5 даёт 2. И то и другое понятно, когда знаешь, как хранятся числа и что значит %.
Арифметические операторы
Большая часть того, что делают компьютеры, сводится к арифметике, и JavaScript записывает её почти так же, как ты на бумаге. Символы, которые выполняют работу, называются операторами. Пять из них ты уже знаешь, а два новые:
| Оператор | Значение | Пример | Результат |
|---|---|---|---|
| + | сложение | 7 + 2 | 9 |
| - | вычитание | 7 - 2 | 5 |
| * | умножение | 7 * 2 | 14 |
| / | деление | 7 / 2 | 3.5 |
| % | остаток | 7 % 2 | 1 |
| ** | степень | 7 ** 2 | 49 |
Для умножения используется звёздочка, потому что букву x можно спутать с переменной x. Деление всегда даёт точный ответ, включая дробную часть: 7 / 2 равно 3.5, а не 3. Оператор остатка % делит и оставляет только остаток. 17 % 5 равно 2, потому что 5 укладывается в 17 три раза (15) и остаётся 2. Звучит как диковинка, но это один из самых используемых операторов в программировании. Число чётное ровно тогда, когда n % 2 равно 0, а minutes % 60 даёт минуты, которые остаются после выделения целых часов.
Порядок действий
JavaScript соблюдает тот же порядок, что и школьная математика. Сначала степени, затем умножение, деление и остаток, затем сложение и вычитание. Операторы одного уровня выполняются слева направо, кроме **, который выполняется справа налево. Скобки важнее всего, так что если сомневаешься, ставь их; они ничего не стоят и делают замысел понятным следующему читателю.
console.log(2 + 3 * 4); // 14
console.log((2 + 3) * 4); // 20
console.log(20 - 6 / 2); // 17
console.log(2 ** 3 * 5); // 40Краткие формы для обновления переменной
Обновлять переменную через её же значение приходится так часто, что для этого есть краткие формы. x += 5 значит x = x + 5, и есть такие же формы -=, *= и /=. Для прибавления или вычитания ровно единицы есть форма ещё короче: x++ прибавляет 1, а x-- вычитает 1. В циклах ты будешь видеть ++ постоянно.
let coins = 10;
coins += 5; // 15
coins *= 2; // 30
coins--; // 29
console.log(coins); // 29Помощники Math
В JavaScript есть встроенный объект Math с готовыми инструментами для чисел. Math.round(2.5) округляет до ближайшего целого (3), Math.floor(2.9) всегда округляет вниз (2), а Math.ceil(2.1) всегда округляет вверх (3). Math.max(4, 9, 2) даёт наибольшее из значений, а Math.min наименьшее. Math.sqrt(81) является квадратным корнем, 9, а Math.PI является числом π, примерно 3.14159. Math.floor и % хорошо работают вместе: для 135 минут Math.floor(135 / 60) даёт 2 часа, а 135 % 60 даёт 15 минут.
Почему 0.1 + 0.2 не равно ровно 0.3
JavaScript хранит каждое число в двоичном виде в памяти фиксированного размера по формату двойной точности IEEE 754, который задаёт стандарт ECMAScript. Некоторые обычные десятичные дроби, например 0.1, нельзя точно записать в двоичной системе, так же как 1/3 нельзя точно записать в десятичной. Крошечные ошибки округления обычно не видны, но иногда проявляются: 0.1 + 0.2 печатает 0.30000000000000004. Это не ошибка в твоём коде. Когда показываешь людям деньги или измерения, округляй результат, например через (0.1 + 0.2).toFixed(2), что даёт строку "0.30". Целые числа примерно до девяти тысяч миллионов миллионов хранятся точно, так что на счёт это никогда не влияет.
Разобранные примеры
Пример 1. Среднее арифметическое 80, 90 и 85 равно (80 + 90 + 85) / 3. Без скобок 80 + 90 + 85 / 3 делит только 85 и даёт около 198.3. Пример 2. Делится ли 2024 на 4? 2024 % 4 равно 0, значит, да. Пример 3. Делим 50 конфет на 6 детей: Math.floor(50 / 6) даёт по 8 каждому, а 50 % 6 даёт 2 в остатке.
| оператор | Символ, который выполняет действие над значениями: + - * / % ** |
| % | Остаток от деления: 17 % 5 равно 2 |
| ** | Степень: 2 ** 3 равно 8 |
| += | x += 5 значит x = x + 5 |
| ++ | Прибавить к переменной ровно 1 |
| Math.floor | Округлить вниз до целого |
| Math.round | Округлить до ближайшего целого |
| toFixed(2) | Записать число с 2 знаками после точки, в виде строки |
- Что выведет этот код?
console.log(2 + 3 * 4); - Что выведет этот код?
console.log((2 + 3) * 4); - Что выведет этот код?
console.log(17 % 5); - Что выведет этот код?
console.log(9 / 2); - Что выведет этот код?
console.log(2 ** 5); - Что выведет этот код?
let x = 10; x += 4; x *= 2; console.log(x); - Что выведет этот код?
let n = 5; n++; n++; n--; console.log(n); - Что выведет этот код?
console.log(Math.floor(7.9), Math.ceil(7.1));- 8 8
- 7 8
- 7 7
- Что выведет этот код?
console.log(Math.max(3, 11, 6) - Math.min(3, 11, 6)); - Что выведет этот код?
console.log(10 - 4 - 3); - Какое выражение истинно для каждого чётного числа n?
n % 2 === 0n / 2 === 0n % 2 === 1
- Что выведет этот код?
console.log((0.1 + 0.2).toFixed(2));
- + - * / работают как в математике; / сохраняет дробную часть.
- % даёт остаток; n % 2 === 0 значит, что n чётное.
- ** является степенью. Сначала скобки, затем **, затем * / %, затем + -.
- x += 5 и x++ являются краткими формами обновления x.
- Math.floor, Math.round, Math.ceil, Math.max, Math.min и Math.PI.
- В дробных числах бывают крошечные ошибки округления; для показа используй toFixed.
Источники курса (2)
- MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
- Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)
Проверено: 2026-10-17