Справочник языка
Округление и преобразование чисел
Значение часто требуется получить в другом типе, чем оно вычислено: дробный результат нужен как целое, целое — как 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