Знайте все о типе номера| Базовый строительный блок JS
Число — широко распространенный примитивный тип данных в JavaScript. Он используется для представления и хранения любого числового значения в JavaScript.
JavaScript имеет один числовой тип
Многие языки программирования имеют разные типы данных для хранения целых и десятичных чисел. Но в JavaScript есть только один тип для хранения и представления любых чисел.
Числовой тип может хранить…
- Положительные числа — (5,+55, 35000)
- Отрицательные числа — (-55)
- Целые числа (целые) — (0, 13, 33000)
- Десятичные числа — (0,3333, 1,2908, -1,678)
Примеры недопустимых чисел
let x = 33,000 // unexpected number let y = $300 // A number can't contain comma and $ sign
Тип данных указывает, какое значение тип может представлять и хранить, а также указывает, какие типы операций разрешены для определенного типа данных.
Основные операции с числами
// Addition 60 + 5 // 65 // Subtraction 10 - 2// 8 // Multiplication 10 * 6 // 60 // Division 30 / 5 // 6 10 / 3 // 3.3333333333333335 // Modulo 30 % 4 // 2 // Exponent 2**3 // 8
В приведенном выше примере сложение, вычитание и деление довольно просты. Но давайте больше сосредоточимся на Modulo и Exponent.
Оператор по модулю
% известен как оператор по модулю. Он возвращает остаток.
5 % 2 // 1 2 % 5 // 2 -5 % 2 // -1 5 % -2 // 1 -5 % -2 // -1
Если операция Mod выполняется как p % q, то знак результата всегда принадлежит p.
Экспоненциальный оператор
Оператор степени (**) используется для вычисления мощности. Если оно записано в форме base**exponent
, то возвращает base
в степень exponent
.
2 ** 3 // 8 5 ** 2 // 25 9 ** 0.5 // 3
Оценка выражения
Посмотрите на следующее выражение…
5 + 3 * 3 / 3 + 1
Простые выражения легко вычислить, но когда дело доходит до более сложных выражений, трудно решить, какой оператор должен выполняться первым?
Чтобы решить длинное выражение, используются два эмпирических правила.
- Правило приоритета
- Правило ассоциации
Правило приоритета
Это говорит о том, что какой-то оператор имеет высокий приоритет, а какой-то низкий. Оператор с высоким приоритетом оценивается первым, а оператор с низким приоритетом оценивается позже.
Таблица приоритетов для арифметических операторов выглядит следующим образом: оператор с наивысшим приоритетом стоит первым, а оператор с самым низким приоритетом — позже. Операторы с одинаковым приоритетом помещаются в один ряд.
- Экспонента (**)
- Умножение (*) / Деление (/) / Модуль (%)
- Сложение (+) / вычитание (-)
Давайте рассмотрим пример, чтобы понять этот факт.
2 + 3 * 5 = 3 + 15 = 18
Правило ассоциации
То есть появляется несколько операторов в одном выражении с одинаковым приоритетом. В этом случае обычно операторы оцениваются слева направо. Но некоторые операторы имеют ассоциацию справа налево и должны оцениваться справа налево.
Например, оператор экспоненты имеет ассоциацию справа налево.
Посмотрите на пример ниже, чтобы понять правило ассоциации…
Example-1: 2**2**3 = 2**8 = 256 //Execution starts for right as exponent association is R to L. Example-2: 3 + 3 * 4 / 3 - 6 = 3 + 12 / 3 - 6 = 3 + 4 - 6 = 7 - 6 = 1 // * , / executed before + and -. All operator of same priority are // executed from left to right.
NaN — не число
Обсуждая числа и числовые выражения, есть еще одна концепция, которую мы не можем оставить на данном этапе. Концепция NaN
.
NaN
представляет собой числовое значение, представляющее нечто, не являющееся числом. Есть пара выражений, которые генерируют NaN
.
Давайте обсудим некоторые NaN
выражения…
0 / 0 //NaN 1 + NaN //NaN
Любая арифметика с
NaN
всегда приводит кNaN
.
Бесконечность
Еще одно важное числовое значение — Infinity, которое мы должны обсудить, когда будем обсуждать арифметическое выражение и значения типа Number
.
Бесконечность — это термин, который порождает множество больших чисел. Итак, давайте посмотрим на выражения, которые генерируют Infinity
.
1 / 0 // Infinity -5 / 0 // -Infinity
Если вам понравился пост, не забудьте подписаться на меня:
Канал: https://medium.com/@maheshshittlani
Github: https://github.com/maheshshittlani
LinkedIn: https://in.linkedin.com/in/mahesh-shittlani-638b7429