Перейти к основному содержимому
Модуль 2 · Урок 3 из 47/32 в курсе~10 min
Уроки модуля (3/4)

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

В JavaScript существует только один числовой тип: number. Оба целых числа и десятичные дроби (с плавающей запятой) живут там. Нет отдельного int / float как и в других языках.

JS
typeof 42; // 'number'
typeof 3.14; // 'number'
typeof -0.001; // 'number'
typeof Infinity; // 'number'   ← Infinity is a special number
typeof NaN; // 'number'   ← even "Not a Number" is a number (!)

Глобальный объект Math

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

JS
Math.min(3, 1, 7); // 1
Math.max(3, 1, 7); // 7
Math.abs(-5); // 5
Math.round(4.5); // 5
Math.floor(4.9); // 4   (always rounds down)
Math.ceil(4.1); // 5   (always rounds up)
Math.sqrt(16); // 4
Math.pow(2, 10); // 1024   (equivalent to 2 ** 10)
Math.PI; // 3.141592653589793

Случайные числа

Math.random() возвращает десятичное число между 0 (включено) и 1 (исключено). Чтобы получить целое число в диапазоне, вы используете небольшую формулу:

JS
// Random integer between 0 and 9
Math.floor(Math.random() * 10);

// Random integer between 1 and 6 (a six-sided die)
Math.floor(Math.random() * 6) + 1;

Боль десятичных дробей (с плавающей запятой)

JS использует 64-битное представление IEEE-754, общее почти со всеми языки. Это двоичное представление, поэтому некоторые десятичные дроби не могут быть представлено точно:

JS
0.1 + 0.2; // 0.30000000000000004 (!)
0.1 + 0.2 === 0.3; // false

Стандартное решение: округлить с помощью toFixed(n) (который возвращает строку) или используйте целые числа в центах/тысячных долях при работе с деньгами:

JS
(0.1 + 0.2).toFixed(2); // '0.30' (string)
Number((0.1 + 0.2).toFixed(2)); // 0.3 (number)

Попробуйте это

Упражнение#js.m2.l3.e1
Попыток: 0Загрузка…

Вычислите площадь круга радиусом r = 5, округленную до двух десятичных знаков, как "число". Для `r=5` ожидается 78,54.

Загрузка редактора…
Показать подсказку

Math.PI для числа «пи», ** для возведения в степень; .toFixed(2) для округления, Number(...) для обратного преобразования в число.

Решение доступно после 3 попыток

Обзор упражнения

Упражнение#js.m2.l3.e2
Попыток: 0Загрузка…

Учитывая три числа 12, 7, 23, верните в качестве последнего выражения разницу между максимальным и минимальным значением (т. е. 16).

Загрузка редактора…
Показать подсказку

Math.max и Math.min принимают несколько аргументов, разделенных запятыми.

Решение доступно после 3 попыток