Знайте все о типе номера| Базовый строительный блок JS

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

JavaScript имеет один числовой тип

Многие языки программирования имеют разные типы данных для хранения целых и десятичных чисел. Но в JavaScript есть только один тип для хранения и представления любых чисел.

Числовой тип может хранить…

  1. Положительные числа — (5,+55, 35000)
  2. Отрицательные числа — (-55)
  3. Целые числа (целые) — (0, 13, 33000)
  4. Десятичные числа — (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

Простые выражения легко вычислить, но когда дело доходит до более сложных выражений, трудно решить, какой оператор должен выполняться первым?

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

  1. Правило приоритета
  2. Правило ассоциации

Правило приоритета

Это говорит о том, что какой-то оператор имеет высокий приоритет, а какой-то низкий. Оператор с высоким приоритетом оценивается первым, а оператор с низким приоритетом оценивается позже.

Таблица приоритетов для арифметических операторов выглядит следующим образом: оператор с наивысшим приоритетом стоит первым, а оператор с самым низким приоритетом — позже. Операторы с одинаковым приоритетом помещаются в один ряд.

  1. Экспонента (**)
  2. Умножение (*) / Деление (/) / Модуль (%)
  3. Сложение (+) / вычитание (-)

Давайте рассмотрим пример, чтобы понять этот факт.

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