Числа
Числа нужны везде: цены в корзине, возраст пользователя, количество лайков. В JavaScript для всех чисел есть один тип — number, и целые, и дробные значения хранятся одинаково.
Целые и дробные числа
Целые числа пишут как обычно, а дробную часть отделяют точкой, а не запятой:
console.log(3.5 + 1); // 4.5Длинные числа можно разбивать знаком подчёркивания — JavaScript его просто игнорирует, а читать код становится легче:
const population = 1_500_000;
console.log(population); // 1500000Округление
Для округления есть встроенный объект Math — набор математических функций. Функции, которые принадлежат объекту, называют методами и вызывают через точку:
console.log(Math.round(4.6)); // 5| Метод | Что делает | 4.6 | 4.2 |
|---|---|---|---|
Math.round() | до ближайшего целого | 5 | 4 |
Math.floor() | всегда вниз | 4 | 4 |
Math.ceil() | всегда вверх | 5 | 5 |
Math.trunc() | отбрасывает дробную часть | 4 | 4 |
Знаки после запятой
Метод toFixed() оставляет нужное число знаков после точки. Обратите внимание: он возвращает не число, а строку — это удобно для вывода цен:
const price = 19.987;
console.log(price.toFixed(2)); // 19.99Если с результатом нужно дальше считать, превратите строку обратно в число функцией Number().
Максимум, минимум и степень
Объект Math умеет находить наибольшее и наименьшее из нескольких чисел, а также извлекать корень:
console.log(Math.max(3, 9, 4)); // 9
console.log(Math.min(3, 9, 4)); // 3
console.log(Math.sqrt(16)); // 4Ещё один полезный метод — Math.random(): он возвращает случайное дробное число от 0 до 1 и пригодится в играх и тестах.
Infinity и NaN
Деление на ноль в JavaScript не вызывает ошибку, а даёт особое значение Infinity — бесконечность. А если вычисление не имеет смысла, получается NaN (Not a Number — «не число»):
console.log(10 / 0); // Infinity
console.log('abc' * 2); // NaNПроверить результат на NaN можно функцией Number.isNaN(): она возвращает true, если вычисление не удалось.
Частая ошибка
Дробные числа хранятся в памяти приближённо, поэтому простое сложение иногда даёт «лишние» цифры:
console.log(0.1 + 0.2); // 0.30000000000000004
console.log(0.1 + 0.2 === 0.3); // falseЭто особенность почти всех языков программирования, а не ошибка JavaScript. Для вывода округляйте результат через toFixed(), а деньги удобнее считать в центах — целыми числами.