Поделиться через


Числовые данные

Обновлен: Ноябрь 2007

Выбор между двумя типами числовых данных, используемыми в языке JScript — целочисленными данными и данными с плавающей запятой, — определяется ситуацией, в которой они используются. Существует два способа литерального представления целочисленных данных и данных с плавающей запятой.

К целочисленному типу данных относятся положительные и отрицательные целые числа и ноль. В качестве основы представления этих чисел можно использовать 10 (десятичное представление), 8 (восьмеричное представление) и 16 (шестнадцатеричное представление). Большинство чисел в JScript записывается в десятичном представлении. Все восьмеричные целые числа содержат префикс 0 (ноль). В их состав могут входить только цифры от 0 до 7. Число, которое начинается с цифры 0, но содержит цифры 8 и (или) 9, интерпретируется как десятичное. Использовать восьмеричные числа, как правило, не рекомендуется.

Все шестнадцатеричные целые числа содержат префикс "0x" (ноль и x|X). В их состав могут входить только цифры от 0 до 9 и буквы от A до F (в верхнем или нижнем регистре). В качестве отдельных цифр буквы A-F представляют десятичные числа от 10 до 15. То есть шестнадцатеричное число 0xF эквивалентно десятичному числу 15, а 0x10 эквивалентно числу 16.

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

Значения с плавающей запятой представляют собой целые числа с дробной частью. Подобно целым числам, их можно представить в виде цифр, за которыми следует десятичная запятая и дополнительные цифры. Кроме того, эти числа можно записать в экспоненциальной нотации. В этой нотации строчная или прописная e обозначает "умножить на десять в степени...". Число, которое начинается с цифры 0 и содержит десятичную запятую, интерпретируется как десятичный литерал с плавающей запятой, а не восьмеричный литерал.

Кроме того, с помощью чисел с плавающей запятой в JScript можно представлять особые числовые значения, которые невозможно представить с помощью целочисленных типов данных. Эти особые значения приведены ниже.

  • NaN (не число). Используется при выполнении математической операции над недопустимыми данными, такими как строки или неопределенное значение.

  • Infinity. Используется, если положительное число слишком велико и не может быть представлено в JScript.

  • -Infinity (отрицательная бесконечность). Используется, если абсолютное значение отрицательного числа слишком велико и не может быть представлено в JScript.

  • Положительный и отрицательный 0. В некоторых случаях в языке JScript отличаются положительный и отрицательный нули.

Ниже приведены некоторые примеры чисел JScript. Обратите внимание, что число, которое начинается с "0x" и содержит десятичную запятую, создает ошибку.

Число

Описание

Десятичный эквивалент

.0001, 0,0001, 1e-4, 1,0e-4

Четыре эквивалентных представления чисел с плавающей запятой.

0,0001

3,45e2

Число с плавающей запятой.

345

42

Целое число.

42

0378

Целое число. Оно выглядит как восьмеричное число (поскольку начинается с нуля), однако 8 не является допустимой восьмеричной цифрой, поэтому данное число интерпретируется как десятичное. Оно создает предупреждение уровня 1.

378

0377

Восьмеричное целое число. Обратите внимание, что, хотя внешне оно всего на единицу меньше числа, показанного выше, его фактическое значение совершенно другое.

255

0,0001, 00,0001

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

0,0001

0Xff

Шестнадцатеричное целое число.

255

0x37CF

Шестнадцатеричное целое число.

14287

0x3e7

Шестнадцатеричное целое число. Обратите внимание, что буква e не интерпретируется здесь как экспонента.

999

0x3,45e2

Это ошибка. Шестнадцатеричные числа не могут содержать дробных частей.

Нет (ошибка компилятора)

Переменные, принадлежащие целочисленному типу данных, могут представлять только ограниченный диапазон чисел. При попытке присвоить числовой литерал, который слишком велик или слишком мал для данного целочисленного типа данных, при компиляции создается ошибка несоответствия типов. Дополнительные сведения см. в разделе Сводка типов данных.

Типы данных литералов

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

Целочисленные литералы могут представлять в JScript данные типов int, long, ulong, decimal или double, в зависимости от размера литерала и его использования. Литералы, которые находятся в диапазоне, допустимом для типа int (от -2147483648 до 2147483647), интерпретируются как данные типа int. Литералы за пределами этого диапазона, но находящиеся в диапазоне, допустимом для типа long (от -9223372036854775808 до 9223372036854775807), интерпретируются как данные типа long. Литералы за пределами этого диапазона, но находящиеся в диапазоне, допустимом для типа ulong (от 9223372036854775807 до 18446744073709551615), интерпретируются как данные типа ulong. Все остальные целочисленные литералы интерпретируются как данные типа double, что приводит к потере точности. Исключением из последнего правила являются литералы, которые будут интерпретироваться как данные типа decimal, если литерал непосредственно сохраняется в переменной или константе типа decimal или передается функции, принимающей аргументы типа decimal.

Литералы с плавающей запятой интерпретируются в JScript как данные типа double за исключением случаев, когда литерал сохраняется непосредственно как данные типа decimal (подобно целочисленным литералам). Тогда литерал интерпретируется как тип decimal. Тип данных decimal не может представлять значение NaN и положительную или отрицательную бесконечность.

См. также

Основные понятия

Выражения JScript

Ссылки

Свойство NaN (Global)

Свойство Infinity

Другие ресурсы

Данные в языке JScript

Типы данных (JScript)