Определение числа
Число - набор цифр от 0 до 9. Число в JavaScript представлено одним типом данных Number
. Данный тип включает в себя как целые числа (454), так и десятичные (1.45) или, как их еще называют, числа с плавающей точкой.
1 2 3 4 |
var a = 45; //присвоение переменной а значение целого числа 45 var b = 45.00; //присвоение переменной b значение десятичного числа 45.00 var c = -45; //присвоение переменной с отрицательного числа -45 var d = -45.00; //присвоение переменной d отрицательного десятичного числа -45.00 |
Тип Number
может принимать числовые значения в промежутке от 5*10-324 до 1.7976931348623157*10308. Любое одно значение типа Number
занимает 8 байт памяти т.к. содержит в себе сразу два типа чисел (целые и десятичные) в то время как в других языках программирования, например C++, целые и вещественные числа имеют разные типы - integer
для целых и float
для вещественных, каждый из которых занимает по 4 байта, в данном случае тип Number
можно сравнить с типом double
в других языках.
Для записи длинных чисел с нулями можно использовать сокращенную запись при помощи экспоненты.
1 2 |
var x = 454e8; //454e8 аналогично записи 454*108, результат которой = 45400000000 var y = 454e-8; //454e-8 аналогично записи 454*10-8, результат которой = 0.00000454 |
Помимо чисел десятичной системы могут использоваться шестнадцатеричные числа.
1 |
var x = 0xFF; |
Не рекомендуется использовать числа с ведущим нулем - var x = 0124;
, т.к. старые браузеры не поддерживающие ECMAScript 5, могут распознать такое число как восьмеричное.
Точность чисел
В JavaScript целое число сохраняет свою точность только если не превышает длину в 15 символов, а десятичные не превышают 17 символов. В противном случае они округляются.
1 2 3 4 |
var a = 999999999999999; //15 девяток. x = 999999999999999 var b = 9999999999999999; //16 девяток. y = 10000000000000000 var c = 0.9999999999999999; //16 девяток. c = 0.9999999999999999 var d = 0.99999999999999999; //17 девяток. d = 1 |
Необычные числа
Infinity
- представляет собой числовое значение, которое выходит за пределы максимально возможного числа (~1.7*10308).
1 |
var x = 1e309; //x: Infinity |
NaN
(Not a Number) - также является значением типа Number
, однако оно означает, что определенное значение не является числом.
1 2 |
var x = 45 * "один"; //x: NaN, т.к. мы умножаем число на строку со словом var y = 45 * "1"; //x: 45, т.к. мы умножаем на строку с числом |
Число как объект
Число в JavaScript представляет собой простое значение, однако его можно представить в роли объекта добавив ключевое слово new
и метод Number()
, после этого, над числом-объектом можно провести любые объектные операции.
1 2 |
var numObject = new Number(454); //Определение числа как объекта numObject.amount = 3; //Определение свойства amount со значением 3 |
Приведение числа к объектному типу часто не рекомендуется, т.к. такое преобразование способствует замедлению выполнения кода и может привести к непредвиденным последствиям.
Сравнение чисел
Сравнение чисел не отличается от сравнения других типов данных, для этого используются следующие операторы:
- Оператор == - сравнение только по значению
- Оператор === - сравнение по значению и типу данных
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var a = 1; var b = 2; var c = "1"; var n1 = NaN var n2 = NaN; var i1 = Infinity; var i2 = Infinity; var x = new Number(2); // (a == b) - false (Значения не равны) // (a == c) - true (Значения равны) // (a === c) - false (Значения равны, а типы данных нет) // (b == x) - true (Значения равны) // (b === x) - false (Значения равны, а типы данных нет) // (n1 == n2) - false (Значения не равны, т.к. не число может быть чем угодно) // (i1 == i2) - true (Значения равны) |
Перевод других типов данных в число
Для того, чтобы быстро перевести любой тип данных в тип Number
, достаточно добавить знак +
(плюс) перед самим значением или использовать функцию-конструктор Number()
.
1 2 3 |
var x = "454"; //x: "454" - строка var a = +x; //a: 454 - число var b = Number(x); //b: 454 - число |
Использование методов и свойств чисел
Вызов методов чисел такой же как в строках и других типах данных JavaScript, т.е. вызов осуществляется через опереатор .
(точка).
1 2 |
var x = 454; x.valueOf(); //Получение значения переменной |
Применение методов и свойств к простым числовым литералам невозможно, поэтому если интерпретатор видит вызов метода из числа, то он автоматически преобразует его в объект и делает вызов метода или свойства уже из числа-объекта.
Важно заметить, что вызов метода не переопределяет число, а создает ее копию и проводит манипуляции с ней не изменяя первоначальное значение.
1 2 3 |
var x = 4.128; var y = x.toFixed(2); //y: 4.13 x.valueOf(); //x: 4.128 - Значение х не изменилось |
Арифметические операции над числами
С числами в JavaScript можно проводить стандартные арифметические операции, такие как: сложение +
, вычитание -
, умножение *
, деление /
.
1 2 3 4 5 6 |
var a = 10 + 2; //a: 12 var b = 10 - 2; //b: 8 var c = 10 * 2; //c: 20 var d = 10 / 2; //d: 5 var e = 10 * NaN; //e: NaN, т.к. NaN может быть чем угодно var f = 10 + Infinity; //f: Infinity |
В 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 - строковое значение) | ||
|