12 3.543
Числа в JavaScript представляют собой 64-битные значения двойной точности формата IEEE 754. Они такие же неизменяемые, как и строки. Доступны С-подобные операторы для работы с числами (+, -, *, /, %, =, +=, -=, *=, /=, ++, –).
Тип данных числа — «number».
typeof 12 // "number" typeof 3.543 // "number"
Логическое значение по умолчанию
Если это 0, то значение по умолчанию false:
!0 // true !1 // false !-1 // false
Поскольку числа реализованы как значения двойной точности, то следующий результат является верным:
0.1 + 0.2 // 0.30000000000000004
Объект Math
JavaScript предоставляет инструменты для работы с числами в объекте Math:
Math.PI // 3.141592653589793 Math.cos(Math.PI) // -1
Анализ чисел
parseInt и parseFloat помогают анализировать числа и преобразовывать строки в числа. Если система исчисления не указана, они делают некоторое неявное преобразование:
parseInt("123") = 123 (implicit decimal)
parseInt("010") = 8 (implicit octal)
parseInt("0xCAFE") = 51966 (implicit hexadecimal)
parseInt("010", 10) = 10 (explicit decimal)
parseInt("11", 2) = 3 (explicit binary)
parseFloat("10.10") = 10.1
Конвертация чисел в строки
После добавления чисел к строке результат всегда является строкой. Оператор идентичен, поэтому будьте осторожны: если Вы хотите сложить числа и потом добавить их к строке, то вычисления необходимо взять в круглые скобки:
"" + 1 + 2; // "12" "" + (1 + 2); // "3" "" + 0.0000001; // "1e-7" parseInt(0.0000001); // 1 (!)
Или используйте класс String в javascript, который преобразует значение в строку:
String(1) + String(2); //"12" String(1 + 2); //"3"
Неопределенности и бесконечности
Анализ чего-то, что не является числом возвращает неопределенность (NaN). isNaN может помочь обнаружить подобный случай:
parseInt("hello", 10) // NaN
isNaN(parseInt("hello", 10)) // true
Деление на ноль возвращает бесконечность:
1 / 0 // Infinity
Как неопределенность (NaN), так и бесконечность (Infinity) имеют тип «number»:
typeof NaN // "number" typeof Infinity // "number"
Помните, что неопределенности сравниваются довольно странным способом:
NaN == NaN // false (!)
Но:
Infinity == Infinity // true
Целое число
Целое число — чистый тип числа. Всегда, когда явно указан, показывает, что ожидается число без плавающей точки.
Число с плавающей точкой
Число с плавающей точкой — чистый тип числа, также как и целое число, но всегда, когда явно указано, показывает, что ожидается дробное число.

