Числа в JavaScript

Определение числа

Число - набор цифр от 0 до 9. Число в JavaScript представлено одним типом данных NumberДанный тип включает в себя как целые числа (454), так и десятичные (1.45) или, как их еще называют, числа с плавающей точкой. 

Тип Number может принимать числовые значения в промежутке от 5*10-324 до 1.7976931348623157*10308. Любое одно значение типа Number занимает 8 байт памяти т.к. содержит в себе сразу два типа чисел (целые и десятичные) в то время как в других языках программирования, например C++, целые и вещественные числа имеют разные типы - integer для целых и float для вещественных, каждый из  которых занимает по 4 байта, в данном случае тип Number можно сравнить с типом double в других языках. 

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

Помимо чисел десятичной системы могут использоваться шестнадцатеричные числа.

Не рекомендуется использовать числа с ведущим нулем - var x = 0124;, т.к. старые браузеры не поддерживающие ECMAScript 5, могут распознать такое число как восьмеричное.

Точность чисел

В JavaScript целое число сохраняет свою точность только если не превышает длину в 15 символов, а десятичные не превышают 17 символов. В противном случае они округляются.

Необычные числа

Infinity  - представляет собой числовое значение, которое выходит за пределы максимально возможного числа (~1.7*10308).

NaN (Not a Number) - также является значением типа Number, однако оно означает, что определенное значение не является числом.

Число как объект

Число в JavaScript представляет собой простое значение, однако его можно представить в роли объекта добавив ключевое слово new  и метод Number(), после этого, над числом-объектом можно провести любые объектные операции.

Приведение числа к объектному типу часто не рекомендуется, т.к. такое преобразование способствует замедлению выполнения кода и может привести к непредвиденным последствиям.

Сравнение чисел

Сравнение чисел не отличается от сравнения других типов данных, для этого используются следующие операторы:

  • Оператор == - сравнение только по значению
  • Оператор === - сравнение по значению и типу данных

Перевод других типов данных в число

Для того, чтобы быстро перевести любой тип данных в тип Number, достаточно добавить знак + (плюс) перед самим значением или использовать функцию-конструктор Number().

Использование методов и свойств чисел

Вызов методов чисел такой же как в строках и других типах данных JavaScript, т.е. вызов осуществляется через опереатор . (точка).

Применение методов и свойств к простым числовым литералам невозможно, поэтому если интерпретатор видит вызов метода из числа, то он автоматически преобразует его в объект и делает вызов метода или свойства уже из числа-объекта.

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

Арифметические операции над числами

С числами в JavaScript можно проводить стандартные арифметические операции, такие как: сложение +, вычитание -, умножение *, деление /.

В JavaScript существует известная ошибка выполнения выражения 0.1 + 0.2 результат, которого равен 0.30000000000000004. Данную проблему можно решить следующим способом parseFloat((0.1 + 0.2).toFixed(1))

Свойства чисел

Метод Описание
constructor возвращает функцию, которая создает числовой прототип
MAX_VALUE возвращает максимально возможное число Javascript
MIN_VALUE возвращает минимально возможное число Javascript
NEGATIVE_INFINITY возвращает отрицательную бесконечность
POSITIVE_INFINITY возвращает бесконечность
NaN возвращает NaN
prototype позволяет добавить методы и свойства к объекту

Методы чисел

Метод Описание
toExponential(x) переводит число в число с экспонентой (x - номер цифры для округления)
toFixed(x) переводит число в строку (x - номер цифры для округления)
toPrecision(x) задает длину числа (x - значение длины)
toString(x) переводит число в строку (x - система счисления)
valueOf() возвращает значение числа
Number(x) переводит любое значение в число (x - значение для перевода)
parseInt("x") переводит строку в целое число (x - строковое значение)
parseFloat("x") переводит строку в десятичное число (x - строковое значение)