edubun
Русский

Числа и математика

В JavaScript 0.1 + 0.2 даёт 0.30000000000000004, а 17 % 5 даёт 2. И то и другое понятно, когда знаешь, как хранятся числа и что значит %.

Арифметические операторы

Большая часть того, что делают компьютеры, сводится к арифметике, и JavaScript записывает её почти так же, как ты на бумаге. Символы, которые выполняют работу, называются операторами. Пять из них ты уже знаешь, а два новые:

ОператорЗначениеПримерРезультат
+сложение7 + 29
-вычитание7 - 25
*умножение7 * 214
/деление7 / 23.5
%остаток7 % 21
**степень7 ** 249

Для умножения используется звёздочка, потому что букву 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 знаками после точки, в виде строки
  1. Что выведет этот код?
    console.log(2 + 3 * 4);
  2. Что выведет этот код?
    console.log((2 + 3) * 4);
  3. Что выведет этот код?
    console.log(17 % 5);
  4. Что выведет этот код?
    console.log(9 / 2);
  5. Что выведет этот код?
    console.log(2 ** 5);
  6. Что выведет этот код?
    let x = 10;
    x += 4;
    x *= 2;
    console.log(x);
  7. Что выведет этот код?
    let n = 5;
    n++;
    n++;
    n--;
    console.log(n);
  8. Что выведет этот код?
    console.log(Math.floor(7.9), Math.ceil(7.1));
    • 8 8
    • 7 8
    • 7 7
  9. Что выведет этот код?
    console.log(Math.max(3, 11, 6) - Math.min(3, 11, 6));
  10. Что выведет этот код?
    console.log(10 - 4 - 3);
  11. Какое выражение истинно для каждого чётного числа n?
    • n % 2 === 0
    • n / 2 === 0
    • n % 2 === 1
  12. Что выведет этот код?
    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