Работа с числовыми данными
ABL предоставляет три типа числовых данных, которые вы можете использовать в своём приложении.
Тип данных ABL | Описание |
INTEGER или INT | 32-битное целое число в диапазоне от -2147483648 до +2147483647. |
INT64 | 64-битное целое число в диапазоне от -9223372036854775808 до +9223372036854775807. |
DECIMAL | Значение со знаком, содержащее не более 50 цифр, включая 10 цифр справа от десятичного знака. |
Все числовые типы данных имеют начальное значение по умолчанию, равное 0. Однако вы можете дополнительно установить начальные значения при определении переменных.
Арифметические операторы
Стандартные арифметические операторы ( +, -, *, /, modulo) используются для выполнения вычислений в ABL. Вы можете выполнять вычисления, используя переменные, константы, значения полей базы данных и функции.
Арифметический оператор | Имя | Пример |
+ | Оператор сложения | dBalance = dBalance + dVarPrice |
– | Оператор вычитания | dBalance = dBalance – dTotalPaid |
* | Оператор умножения | dExtendedPrice = dPrice * dQuantity |
/ | Оператор деления | dVarPrice = dExtendedPrice / iQuantity |
modulo | Остаток после деления | dQuota = iTotal MODULO 4 |
Порядок вычисления
Вычисление числовых выражений в ABL соответствует стандартному порядку вычисления, используемому в большинстве языков программирования:
- Умножение
- Разделение
- Модуль
- Добавление
- Вычитание
Использование круглых скобок для ясности
Рекомендуется использовать круглые скобки для явного указания желаемого порядка вычисления. Это делает ваш код понятным и простым в обслуживании, а также гарантирует, что результат будет именно таким, как вы задумали.
dBonus = ((dQuota / dTSales) * dBasePay) + 1000.
В числовых выражениях вы можете использовать операторы + и – двумя способами. Если между оператором и последующим числовым значением есть пробел, то оператор интерпретируется как арифметический оператор. В противном случае он интерпретируется как унарный оператор, который делает числовое значение положительным или отрицательным. Убедитесь, что вы включили пробел, если вам нужна арифметическая операция.
Операторы сравнения
ABL предоставляет операторы для сравнения переменных. Вы можете использовать либо символьное представление, либо символ для каждого оператора.
Оператор |
EQ или = |
NE или <> |
LT или < |
LE или <= |
GT или > |
GE или >= |
Преобразование числовых данных
Вы должны помнить о том, как числовые данные могут быть автоматически преобразованы. Если вы складываете INTEGER с DECIMAL, то результат преобразуется в тип DECIMAL. Если вы присваиваете значение DECIMAL переменной INTEGER, то результат преобразуется в INTEGER с округлением.
Кроме того, ABL предоставляет встроенные функции для преобразования числовых данных и работы с ними. Обратите внимание, что эти функции требуют параметров.
Функции ABL |
ABSOLUTE |
DECIMAL |
EXP |
INTEGER |
INT64 |
LOG |
MAXIMUM |
MINIMUM |
RANDOM |
ROUND |
SQRT |
TRUNCATE |
Пример использования INTEGER, ROUND и TRUNCATE
В следующем примере кода демонстрируются функции INTEGER, ROUND и TRUNCATE:
VAR DECIMAL test = 350.9875. MESSAGE "Original value:" test SKIP "Integer value:" INTEGER(test) SKIP "Rounded value:" ROUND(test,0) SKIP "Truncated value:" TRUNCATE(test,0). .
Код примера выводит следующий результат:
Original value: 350.9875 Integer value: 351 Rounded value: 351 Truncated value: 350