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

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

Округление и преобразование чисел

Значение часто требуется получить в другом типе, чем оно вычислено: дробный результат нужен как целое, целое — как DOUBLE для дальнейшего деления, число — как текст для вывода или наоборот. Для таких переходов служат INT, CINT, CLNG, CDBL, CDEC, STR и VAL. Они различаются типом результата, правилом обработки дробной части и тем, читают ли они значение из текста.

INT

INT возвращает наибольшее целое, не превышающее число. Функция нужна для явного получения числового значения требуемого типа; вызывать её можно в выражении консольной или графической программы, оператор SCREEN или CANVAS не требуется.

Синтаксис

INT(<значение>)

Аргументы

Аргумент должен быть числом типа INTEGER, LONG, DOUBLE или DECIMAL. Передайте выражение, над которым нужно выполнить указанное вычисление.

Результат

Результат имеет тип INTEGER.

Правила и ограничения

Для отрицательного дробного числа INT округляет вниз, а CINT усекает к нулю.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3008 возникает, если значение не помещается в целевой тип.

Пример

PRINT INT(-2.8)
PRINT INT(2.8)

Ожидаемый вывод:

-3
2

См. также

Указатель встроенных функций

CINT

Функция CINT возвращает целую часть числа в типе INTEGER. Она нужна для явного получения числового значения требуемого типа. Вызов допустим в выражении консольной и графической программы; оператор SCREEN или CANVAS не нужен.

Синтаксис

CINT(<значение>)

Аргументы

Аргумент должен быть числом типа INTEGER, LONG, DOUBLE или DECIMAL. Передайте выражение, над которым нужно выполнить указанное вычисление.

Результат

Результат имеет тип INTEGER.

Правила и ограничения

Дробная часть удаляется к нулю; половины не округляются.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3008 возникает, если значение не помещается в целевой тип.

Пример

PRINT CINT(-2.8)
PRINT CINT(2.8)

Ожидаемый вывод:

-2
2

См. также

Указатель встроенных функций

CLNG

CLNG возвращает целую часть числа в типе LONG, то есть даёт явное числовое значение требуемого типа. Вызывается функция в выражениях консольных и графических программ; оператор SCREEN или CANVAS не требуется.

Синтаксис

CLNG(<значение>)

Аргументы

Аргумент должен быть числом типа INTEGER, LONG, DOUBLE или DECIMAL. Передайте выражение, над которым нужно выполнить указанное вычисление.

Результат

Результат имеет тип LONG.

Правила и ограничения

Дробная часть удаляется к нулю. DOUBLE не может точно представить все LONG.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3008 возникает, если значение не помещается в целевой тип.

Пример

PRINT CLNG(-2.8)
PRINT CLNG(2.8)

Ожидаемый вывод:

-2
2

См. также

Указатель встроенных функций

CDBL

CDBL возвращает число, преобразованное в DOUBLE. Функция нужна для явного получения числового значения требуемого типа и работает в выражениях консольных и графических программ без оператора SCREEN или CANVAS.

Синтаксис

CDBL(<значение>)

Аргументы

Аргумент должен быть числом типа INTEGER, LONG, DOUBLE или DECIMAL. Передайте выражение, над которым нужно выполнить указанное вычисление.

Результат

Результат имеет тип DOUBLE.

Правила и ограничения

Преобразование больших LONG или точных DECIMAL может потерять значащие цифры.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3008 возникает, если значение не помещается в целевой тип.

Пример

PRINT CDBL(12)

Ожидаемый вывод:

12

См. также

Указатель встроенных функций

CDEC

Функция CDEC возвращает число, преобразованное в DECIMAL. Её применяют для явного получения числового значения требуемого типа. Вызывать её можно в выражении консольной или графической программы — оператор SCREEN или CANVAS не требуется.

Синтаксис

CDEC(<значение>)

Аргументы

Аргумент должен быть числом типа INTEGER, LONG, DOUBLE или DECIMAL. Передайте выражение, над которым нужно выполнить указанное вычисление.

Результат

Результат имеет тип DECIMAL.

Правила и ограничения

Преобразование DOUBLE не восстанавливает точность, утраченную в исходном DOUBLE.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. MB3008 возникает, если значение не помещается в целевой тип.

Пример

PRINT CDEC(12.5)

Ожидаемый вывод:

12.5

См. также

Указатель встроенных функций

STR

STR возвращает строковую запись числа, что позволяет включить числовое значение в строку. Вызов допустим в выражении консольной и графической программы; оператор SCREEN или CANVAS не нужен.

Синтаксис

STR(<значение>)

Аргументы

Аргумент должен быть числом типа INTEGER, LONG, DOUBLE или DECIMAL. Передайте выражение, над которым нужно выполнить указанное вычисление.

Результат

Функция возвращает значение типа STRING.

Правила и ограничения

Десятичный разделитель — точка; положительное число не получает ведущего пробела. Форматирование не зависит от языка интерфейса. Очень большие или малые DOUBLE могут иметь показатель степени.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента.

Пример

PRINT "[" & STR(12) & "]"
PRINT STR(-2.5)

Ожидаемый вывод:

[12]
-2.5

См. также

Указатель встроенных функций

VAL

Функция VAL возвращает число, прочитанное из строки, — так получают числовое значение из текста. Для проверки всей строки используйте ISNUMERIC. Вызывается она в выражениях консольных и графических программ; оператор SCREEN или CANVAS не требуется.

Синтаксис

VAL(<текст>)

Аргументы

Передайте STRING с числом или с числовым началом. Аргумент не изменяется.

Результат

Результат DOUBLE; если число прочитать нельзя или оно неконечно, возвращается 0.

Правила и ограничения

Перед разбором края строки очищаются от пробельных символов. Функция читает самый длинный законченный числовой префикс: необязательный знак, десятичные цифры ASCII от 0 до 9, точку и необязательный показатель e/E со своим знаком и хотя бы одной цифрой. В мантиссе должна быть хотя бы одна цифра; допустимы, например, .5 и 12.. Если после e/E нет цифр показателя, разбор заканчивается перед e/E: VAL("12e+") возвращает 12. Иные цифры Unicode не входят в числовую запись.

Запятая не является разделителем групп: VAL("1,234") возвращает 1. Пустая строка, отсутствие числового префикса и непредставимый конечным DOUBLE результат дают 0. Функция не проверяет весь текст: для полной проверки служит ISNUMERIC.

Диагностика

Компилятор отклоняет неверное количество аргументов и несовместимый тип аргумента. Неподходящий текст не вызывает ошибки выполнения.

Пример

PRINT VAL("12abc")
PRINT VAL("")
PRINT VAL("1,234")
PRINT VAL("1e999")
PRINT VAL("12e+")
PRINT VAL("12e-2x")

Ожидаемый вывод:

12
0
1
0
12
0.12

См. также

Указатель встроенных функций