Перейти к содержанию

Числа, математика и случайность: создаём игру-угадайку

Начало урока

Числа, математика и случайность

Разберёмся, как JavaScript на самом деле считает, обойдём классические ошибки с числами и напишем весёлую игру-угадайку.

Главная идея: в JavaScript любое число - и целое, и десятичная дробь - хранится одинаково. Именно этот выбор объясняет почти все "странности" с числами, которые вам встретятся. Как только вы это поймёте, вы сможете предсказывать сюрпризы, а не попадаться на них.
К концу урока вы сможете:
  • объяснить, почему в JavaScript только один тип чисел,
  • понять, почему 0.1 + 0.2 не равно ровно 0.3,
  • безопасно округлять числа и работать с деньгами без ошибок,
  • распознавать NaN и правильно его проверять,
  • пользоваться объектом Math и генерировать случайные числа в диапазоне,
  • собрать всё это в игре-угадайке чисел.

Один тип чисел для всего

Во многих языках есть два отдельных вида чисел: целые (whole numbers, например 7) и с плавающей точкой (десятичные, например 3.14). JavaScript, на котором работает Node, снаружи всё упрощает: тип чисел всего один - он называется number. Напишете вы 7 или 3.14 - Node хранит и то, и другое как один и тот же вид значения: 64-битное число с плавающей точкой.

Аналогия. Представьте линейку, которой можно измерить любую длину, но её самые маленькие деления - это крошечные фиксированные шаги. Целые сантиметры попадают точно на деление, поэтому они идеально точны. А длина вроде "одна треть сантиметра" оказывается между двумя делениями, и линейке приходится выбирать ближайшее - близко, но не идеально. Числа в JavaScript ведут себя так же: целые числа до очень больших значений точны, но многие дроби хранятся лишь как ближайшее доступное значение.

Проверить тип любого значения можно оператором typeof:

typeof 7        // "number"
typeof 3.14     // "number"
typeof -0.5     // "number"

Все три - один и тот же тип. Нет отдельных "int" или "float" - только number. Это упрощает код для новичков, но именно отсюда растут сюрпризы, о которых пойдёт речь дальше.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя