Объект Number представляет числа. Чтобы создать число, надо передать в конструктор Number число или строку, представляющую число:
const x = new Number(34); const y = new Number('34'); console.log(x+y); // 68
Определения x и y в данном случае будут практически аналогичны.
Однако создавать объект Number можно и просто присвоив переменной определенное число:
const z = 34;
Объект Number предоставляет ряд свойств и методов. Некоторые его свойства:
Number.MAX_VALUE
: наибольшее возможное целое число. Приблизительно равно 1.79E+308. Числа, которые больше этого значения, рассматриваются как Infinity
Number.MIN_VALUE
: наименьшее возможное положительное целое число. Приблизительно равно 5e-324 (где-то около нуля)
Number.NaN
: специальное значение, которое указывает, что объект не является числом
Number.NEGATIVE_INFINITY
: значение, которое обозначает отрицательную бесконечность и которое возникает при переполнении. Например, если мы складываем два
отрицательных числа, которые по модулю равны Number.MAX_VALUE. Например:
const x = -1 * Number.MAX_VALUE const y = -1 * Number.MAX_VALUE const z = x + y; if(z===Number.NEGATIVE_INFINITY) console.log("отрицательная бесконечность"); else console.log(z);
Number.POSITIVE_INFINITY
: положительная бесконечность. Также, как и отрицательная бесконечность, возникает при переполнении,
только теперь в положительную сторону:
const x = Number.MAX_VALUE const y = Number.MAX_VALUE const z = x * y; if(z===Number.POSITIVE_INFINITY) console.log("положительная бесконечность"); else console.log(z);
Некоторые основные методы:
isNaN()
: определяет, является ли объект числом. Если объект не является числом, то возвращается значение true:
const a = Number.isNaN(Number.NaN); // true const b = Number.isNaN(true); // false - new Number(true) = 1 const c = Number.isNaN(null); // false - new Number(null) = 0 const d = Number.isNaN(25); // false const e = Number.isNaN("54"); // false
Но следующее выражение вернет false, хотя значение не является числом:
const f = Number.isNaN("hello"); // false
Чтобы избежать подобных ситуаций, лучше применять глобальную функцию isNaN:
const f = isNaN("hello"); // true
parseFloat()
: преобразует строку в число с плавающей точкой. Например:
const a = Number.parseFloat("34.90"); // 34.9 console.log(a); const b = Number.parseFloat("hello"); // NaN console.log(b); const c = Number.parseFloat("34hello"); // 34 console.log(c);
parseInt()
: преобразует строку в целое число. Например:
const a = Number.parseInt("34.90"); // 34 console.log(a); const b = Number.parseInt("hello"); // NaN console.log(b); const c = Number.parseInt("25hello"); // 25 console.log(c);
toFixed()
: оставляет в числе с плавающей точкой определенное количество знаков в дробной части. Например:
const a = 10 / 1.44; console.log("До метода toFixed(): ", a, "<br/>"); a = a.toFixed(2); // оставляем два знака после запятой console.log("После метода toFixed(): ", a, "<br/>");
Вывод браузера:
До метода toFixed(): 6.944444444444445 После метода toFixed(): 6.94
Выше мы рассматривали перевод строк в числа в десятичной системе. Но мы можем с помощью второго параметра явно указать, что хотим преобразовать строку в число в определенной системе. Например, преобразование в число в двоичной системе:
const num1 = "110"; const num2 = parseInt(num1, 2); console.log(num2); // 6
Здесь в функцию parseInt
в качестве второго параметра передается число 2, что указаывает, что первый параметр будет рассматриваться как число в двоичной системе. Результатом будет 6, так как 110 в двоичной системе - это число 6 в десятичной.
Для преобразования числа в строку у него можно вызвать специальный метод toString()
:
const num = 10; console.log(num.toString()); // 10
Однако в данном случае нет смысла вызывать у числа num метод toString()
, так как число можно вывести на консоль без всяких преобразований. Тем не менее метод
toString()
может быть полезен - в качестве параметра он принимает основание системы счисления числа и может быть использован для вывода числа в определенной системе счисления:
const num1 = 0b0110; // выводим число в двоичной системе console.log(num1.toString(2)); // 110 const num2 = 0xFF; // выводим число в шестнадцатеричной системе console.log(num2.toString(16)); // ff