Числа в JavaScript

Числа в JavaScript имеют тип number. С их помощью можно хранить возраст, цену товара, количество элементов, результат вычислений, координаты, проценты и другие числовые данные.

let age = 25;
let price = 1499;
let count = 3;

Если число записано без кавычек, JavaScript воспринимает его как число. Если поставить кавычки, это уже будет строка.

console.log(typeof 25);
console.log(typeof '25');

Результат:

number
string

Что такое number

number - это числовой тип данных в JavaScript. В него входят обычные целые числа, дробные числа и несколько специальных значений, например NaN и Infinity.

let first = 10;
let second = 2.5;
let third = -7;

Все три значения относятся к типу number:

console.log(typeof first);
console.log(typeof second);
console.log(typeof third);

В консоли будет:

number
number
number

В JavaScript не нужно отдельно указывать, что переменная хранит число. Достаточно записать числовое значение.

Целые и дробные числа

Целые числа записываются привычным способом:

let users = 10;
let year = 2026;
let temperature = -5;

Дробные числа записываются через точку, а не через запятую.

let price = 99.5;
let percent = 12.75;

Правильно:

let number = 1.5;

Неправильно:

let number = 1,5;

Для JavaScript запятая не является разделителем дробной части. Поэтому дробные числа пишем именно через точку.

Числа в переменных

Числа часто записывают в переменные, чтобы потом использовать их в вычислениях.

let price = 500;
let count = 4;

let total = price * count;

console.log(total);

В консоли будет:

2000

Здесь в переменной price хранится цена, в count - количество, а в total - результат умножения.

Если значение должно изменяться, используем let:

let score = 0;

score = score + 10;
score = score + 5;

console.log(score);

Результат:

15

Если значение не меняется, можно использовать const:

const maxScore = 100;

console.log(maxScore);

Математические действия

С числами можно выполнять обычные математические действия.

console.log(10 + 5);
console.log(10 - 5);
console.log(10 * 5);
console.log(10 / 5);

Результат:

15
5
50
2

Основные операторы:

  • + - сложение;
  • - - вычитание;
  • * - умножение;
  • / - деление;
  • % - остаток от деления;
  • ** - возведение в степень.

Пример с остатком от деления:

console.log(10 % 3);

Результат:

1

Число 10 делится на 3 три раза, остается 1. Это и есть остаток от деления.

Пример со степенью:

console.log(2 ** 3);

Результат:

8

Порядок вычислений

JavaScript учитывает привычный порядок математических действий: сначала умножение и деление, потом сложение и вычитание.

console.log(2 + 3 * 4);

Результат будет:

14

Сначала выполняется 3 * 4, потом к результату прибавляется 2.

Если нужно изменить порядок, используем круглые скобки:

console.log((2 + 3) * 4);

Результат:

20

Скобки делают код понятнее, поэтому в сложных выражениях их лучше не жалеть.

Строки и числа

Одна из частых ошибок новичков - путать число и строку с числом.

let first = 10;
let second = 5;

console.log(first + second);

Результат:

15

А теперь добавим кавычки:

let first = '10';
let second = '5';

console.log(first + second);

Результат будет другим:

105

Здесь JavaScript видит строки и объединяет их. Поэтому вместо сложения получается склеивание текста.

Это особенно важно при работе с prompt(). Он возвращает строку, даже если пользователь ввел число.

let age = prompt('Сколько вам лет?');

console.log(typeof age);

Если нужно именно число, строку придется преобразовать. Это разберем в отдельном уроке про преобразование типов.

NaN

NaN расшифровывается как Not a Number, то есть “не число”. Оно появляется, когда JavaScript ожидал получить число, но нормального числового результата не получилось.

console.log('JavaScript' / 2);

Результат:

NaN

Строку ‘JavaScript’ нельзя разделить на число 2, поэтому JavaScript возвращает NaN.

Интересный момент: тип NaN все равно number.

console.log(typeof NaN);

Результат:

number

На первый взгляд это странно, но так устроен язык. Позже мы разберем специальные проверки для NaN.

Infinity

Infinity означает бесконечность. Например, такой результат можно получить при делении на ноль.

console.log(10 / 0);

Результат:

Infinity

Если делить отрицательное число на ноль, получится -Infinity.

console.log(-10 / 0);

Результат:

-Infinity

Обычно в простых задачах Infinity появляется из-за ошибки в вычислениях. Например, когда делитель случайно оказался равен нулю.

Дробные вычисления

С дробными числами JavaScript иногда может давать неожиданный результат.

console.log(0.1 + 0.2);

В консоли будет не ровно 0.3, а примерно такое значение:

0.30000000000000004

Это связано с тем, как дробные числа хранятся внутри компьютера. Такая особенность встречается не только в JavaScript.

На первых уроках достаточно запомнить: если работаете с дробными числами, особенно с деньгами или точными расчетами, нужно быть аккуратнее. Для форматирования результата позже разберем метод toFixed().

Частые ошибки

Первая ошибка - писать дробное число через запятую.

let price = 10,5;

В JavaScript дробная часть отделяется точкой:

let price = 10.5;

Вторая ошибка - складывать строки и ждать математический результат.

console.log('10' + '20');

Результатом будет 1020, потому что это строки.

Третья ошибка - не проверять данные, которые пришли от пользователя. Если пользователь ввел не число, в вычислениях можно получить NaN.

let value = 'текст';

console.log(value * 2);

Результат:

NaN

Четвертая ошибка - удивляться дробным неточностям. Запись 0.1 + 0.2 может вернуть не совсем тот результат, который мы ожидаем на бумаге. Для простых учебных задач это не страшно, но знать об этом полезно.

Что дальше

Мы разобрали, как в JavaScript записываются числа, чем число отличается от строки, какие математические действия доступны и почему иногда появляются NaN и Infinity.

Дальше разберем булевы значения true и false. Они нужны для условий, проверок и принятия решений в коде.