Синтаксис JavaScript Справочник JavaScript JSON Коды клавиш События Строгий режим

JavaScript: number

Значениями типа number в JavaScript являются целые числа и числа с плавающей точкой (десятичные дроби). Для записи чисел предусмотрено несколько разных форматов числовых литералов.

Самый простой из них – формат десятичного целого числа:

12   // Целое число

Целые числа можно записывать в виде шестнадцатеричных или восьмеричных литералов. Запись шестнадцатеричного литерала начинается с последовательности символов 0x или 0X (первый символ – цифра нуль, второй – буква "x"), за которой следует последовательность шестнадцатеричных цифр (от 0 до F). Если в литерале присутствует цифра не из этого диапазона, то будет вызвана ошибка. Буквы, которыми выражаются цифры, могут быть как строчными, так прописными:

alert(0Xff);   // Целое число (255) в виде шестнадцатеричного литерала
alert(0xFF);   // Тоже самое

Запись восьмеричного литерала начинается с последовательности символов 0o или 0O (первый символ – цифра нуль, второй – буква "o"), за которой следует последовательность восьмеричных цифр (от 0 до 7). Если в литерале присутствует цифра не из этого диапазона, то будет вызвана ошибка:

alert(0o70);   // Целое число (56), записанное с помощью восьмеричного литерала.

В каком бы формате не были записаны числа, по умолчанию все они выводятся в виде десятичного числа:

alert(0xff - 055);   // 210

Чтобы использовать число с плавающей точкой, необходимо ввести десятичную точку и как минимум одну цифру после неё. Нуль перед десятичной точкой необязателен:

0.3   // Литерал числа с плавающей точкой
.3    // Тоже самое

Числа с плавающей точкой представляются с точностью до 17-го десятичного разряда (не включая сам 17 разряд). Из-за этого например, сложение 0.1 и 0.2 даёт в результате 0.30000000000000004 вместо 0.3. Факт того, что число с плавающей точкой не может быть представлено точно, может приводить к проблемам при сравнении чисел после вычислений:

var x = 0.3 - 0.2;
var y = 0.2 - 0.1;

document.write((x == y) + "<br>");    // false
document.write((x == 0.1) + "<br>");  // false
document.write(y == 0.1);             // true
Попробовать »

Важно понимать, что эта проблема не является чем-то характерным для JavaScript, она проявляется во всех языках программирования, где для представления чисел c плавающей точкой используется формат, определяемый стандартом IEEE-754. Точность чисел с плавающей точкой вполне приемлема для большинства арифметических операций, проблема может возникать лишь при проверке на равенство результатов вычислений производимых с числами с плавающей точкой.

Так как для хранения чисел с плавающей точкой требуется вдвое больше памяти, чем для целых чисел, интерпретатор по возможности преобразует числа с плавающей точкой в целые числа. Если после десятичной точки ничего не указано, число преобразуется в целое. Если число не имеет дробной части (например, 1.0), оно преобразуется в целое:

alert(Number.isInteger(10.));    // true
alert(Number.isInteger(10.0));   // true

Числа можно представлять в виде экспоненциальной записи. Экспоненциальная запись означает число, умноженное на 10 в указанной степени. Экспоненциальная запись состоит из числа, за которым ставится прописная или строчная буква "E", после которой можно поставить необязательный знак + или - и далее показатель степени числа 10:

3.52e5;   // 352000
7E-4;     // 0.0007

По умолчанию интерпретатор переводит в экспоненциальную запись любые числа с плавающей точкой, содержащие как минимум шесть нулей после точки:

alert(0.0000005);   // 5e-7

Любому числовому литералу может предшествовать знак - (минус), делающий число отрицательным:

var temperature = -20;

Для представления чисел в JavaScript используется 64-битный формат, определяемый стандартом IEEE-754. Этот формат способен представлять числа с плавающей точкой в диапазоне от 5e-324 до 1.7976931348623157e+308, а все целые числа в диапазоне от -9007199254740992 до 9007199254740992 включительно.

Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011-2016 © puzzleweb.ru

Реклама на сайте | Обратная связь