Axiom Справочник языка

Справочная статья

Диапазоны и ограничения типов

Раздел диапазонов содержит точные числовые пределы и правила выбора типа литерала. Специальные данные и массивы имеют дополнительные ограничения в своих тематических главах.

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

ТипМинимумМаксимумКратко
INTEGER -2147483648 2147483647 32-битное знаковое целое число.
LONG -9223372036854775808 9223372036854775807 64-битное знаковое целое число.
DOUBLE около -1.7976931348623157E+308 около 1.7976931348623157E+308 64-битное число с плавающей точкой; результат должен оставаться конечным.
DECIMAL -79228162514264337593543950335 79228162514264337593543950335 Точное десятичное число с 28-29 значащими цифрами.

DOUBLE использует двоичную плавающую точку и может округлять десятичную дробь. Для десятичной точности выбирайте DECIMAL, учитывая его меньший диапазон. Неконечный результат DOUBLE считается ошибкой выполнения.

Тип числового литерала

ЗаписьТипПравило
123INTEGERЕсли целое десятичное значение помещается в диапазон INTEGER.
2147483648LONGЕсли значение уже не помещается в INTEGER, но помещается в LONG.
1.25DOUBLEЛитерал с десятичной точкой получает тип DOUBLE.
&HFFINTEGER или LONGШестнадцатеричный литерал выбирает целочисленный тип по диапазону значения.
&B1010INTEGER или LONGДвоичный литерал выбирает целочисленный тип по величине; допустимы цифры 0 и 1.
TRUE, FALSEBOOLEANЛогические литералы не являются числами.

Минус перед числом является отдельной унарной операцией. Тип целого литерала определяется диапазоном; дробная запись с точкой сама по себе имеет тип DOUBLE. Явный числовой контекст может изменить тип литерала с проверкой диапазона. Правила префиксов &H и &B, отрицательных величин и вывода описаны в статье систем счисления. Особая обработка литерала при явной инициализации DECIMAL описана в правилах преобразования.

Ограничения по темам

Диагностика

  • MB0004 — числовой литерал выходит за допустимый диапазон.
  • MB2018 — константное значение не помещается в явно указанный тип.
  • MB3002 — индекс массива выходит за доступные границы.
  • MB3007 — недопустимый массивный диапазон или запрещённая операция с массивом.
  • MB3008 — арифметическое переполнение или неконечный результат DOUBLE.

См. также