Числовое значение состоит из любой последовательности числовых символов, например:
5
 Числовой тип данных также включает несколько специальных глобальных свойств, которые представляют числовые понятия, такие как Infinity и NaN — значение, означающее «не число», потенциальное результат попытки выполнить математические вычисления над нечисловыми значениями.
Числовой объект
 Когда значение передается в функцию Number() , это значение преобразуется в числовой эквивалент. Например, числовая строка приводит к эквивалентному числовому примитиву:
Number( "10" );
> 10
 Передача значения false или null в Number() возвращает 0 , а true возвращает 1 .
Number( null );
> 0
Number( false );
> 0
Number( true );
> 1`
 Если значение невозможно преобразовать, как в случае с undefined или строкой, содержащей нечисловые символы, функция Number возвращает NaN :
Number( undefined );
> NaN
Number( "The number 3." );
> NaN
 Как подробно описано в разделе «Наследование прототипов» , у вас, скорее всего, практически не будет причин использовать объект Number в качестве конструктора, поскольку он создает объект Number вместо числового литерала.
let numObject = new Number( 15 );
numObject;
> Number { 15 }
Этот объект ведет себя как присвоенное ему значение для математических операций, но он не выполняет строгие сравнения на равенство с числовыми литералами, поскольку типы данных не совпадают, не обеспечивая при этом каких-либо практических преимуществ по сравнению с литеральным значением.
let tenObject = new Number( 10 );
tenObject + 5;
> 15
tenObject === 10;
> false
Плавающие и целые числа
 В JavaScript есть только один тип чисел: 64-битные числа с плавающей запятой двойной точности IEEE 754-1985 между -2^1024 и 2^1024 . Прежде чем JavaScript сохранит какое-либо число в памяти, он сначала преобразует это число в двоичное число с плавающей запятой, также называемое числом с плавающей запятой .
Это 64-битное хранилище (один бит положительного или отрицательного знака, 11 бит для экспоненты и 52 бита для дроби) может вызывать ошибки точности при любом количестве цифр, выходящих за пределы допустимого диапазона. Это ограничение присуще числовому типу данных JavaScript.
0.1 + 0.7
> 0.7999999999999999
 Вместо этого числовое значение можно сохранить как целое число , число с плавающей запятой без дроби между -(2^53 − 1) и 2^53 − 1 . Поскольку числа с плавающей запятой и целые числа хранятся одним и тем же фундаментальным способом, практической разницы в том, как работают эти числа, нет. Однако мы рекомендуем по возможности использовать целые числа, чтобы избежать ошибок в точности.
Числовые операторы
При использовании стандартных математических операторов с числовыми примитивами применяется математический порядок операций : сначала вычисляются любые выражения, заключенные в круглые скобки, затем следуют показатели степени, умножение, деление, сложение и вычитание.
| Оператор | Имя | Описание | Использование | Результат | 
|---|---|---|---|---|
 + | Добавление |  2+2 |  4 | |
 - | Вычитание |  4-2 |  2 | |
 * | Умножение |  2*5 |  10 | |
 / | Разделение |  10/5 |  2 | |
 ++ | Приращение | Добавляет единицу к числу |  2++ |  3 | 
 -- | Декремент | Вычитает единицу из числа |  3-- |  2 | 
 ** | Экспонента |  Возвращает результат поднятия первого операнд в степени второго операнда.  |  2**4 |  16 | 
 % | Остаток |  Возвращает остаток, оставшийся после первый операнд делится на второй операнд.  |  12%5 |  2 | 
Вы также можете использовать математические операторы присваивания, чтобы выполнить математическую операцию над значением переменной и немедленно присвоить это вновь вычисленное значение переменной.
| Оператор | Имя | Использование | 
|---|---|---|
 += | Дополнительное задание |  myValue += 2 | 
 -= | Назначение вычитания |  myValue -= 2 | 
 *= | Назначение умножения |  myValue *= 2 | 
 /= | Назначение дивизии |  myValue /= 2 | 
 **= | Назначение экспоненты |  myValue **= 2 | 
 %= | Назначение остатка |  myValue %= 2 | 
Символические значения
 Числовой примитив также применим к нескольким особым случаям: значению «не число» ( NaN ) и значению, представляющему бесконечность, которое может быть либо положительным ( Infinity ), либо отрицательным ( -Infinity ).
 Вы можете редко столкнуться с Infinity в результате деления на ноль, в этом случае большинство языков программирования вместо этого выдают ошибку:
10 / 0
> Infinity
 Помните, что JavaScript чувствителен к регистру. Infinity — это числовой тип данных, представляющий концепцию бесконечности, но infinity не имеет особого значения:
Infinity
> Infinity
infinity
> Uncaught ReferenceError: infinity is not defined
 NaN (что означает « не число ») появляется чаще в тех случаях, когда результат арифметической операции не может быть выражен в виде числа. Например, поскольку JavaScript пытается определить тип данных на основе значения и контекста, в математической операции можно использовать строковый литерал, содержащий только число: 
"2" * 2;
> 4
Однако если эту строку невозможно проанализировать как числовое значение, математическая операция приведет к нечисловому значению:
"two" * 2;
> NaN
NaN возвращается в любом случае, когда недопустимое значение представлено в виде числа в математической операции. Примеры включают следующее:
-  Неудачное преобразование чисел (например, 
parseInt( undefined )). -  Арифметические операции, результат которых не является действительным числом (например, 
0 / 0,Math.sqrt( -10 )). -  Арифметическая операция с неопределенным результатом ( 
0 * Infinity) -  Арифметическая операция, которая включает либо явный результат 
NaN(NaN + 2), либо результатNaN(2 * "string" / 2). 
Проверьте свое понимание
 Каков результат передачи false в Number() ?
Каков результат следующей математической операции?
 "Six" * 3