Оператор округления (ROUND)
Оператор округления создает свойство, значением которого является результат округления числа до указанного количества разрядов. Аргументами этого оператора являются свойства, определяющие округляемое число и, опционально, точность округления. Число должно принадлежать одному из числовых встроенных классов, а точность — классу INTEGER. Если точность не задана, число округляется до ближайшего целого. Отрицательные значения точности указывают на количество округляемых младших разрядов в целой части числа, это позволяет округлять число до десятков, сотен и т.д.
Оператор возвращает NULL, если округляемое число или точность равны NULL.
То, как округляются значения, находящиеся ровно посередине между двумя возможными результатами, определяется базой данных, а не фиксируется платформой.
Определение класса результата
Класс результата зависит от того, задана ли точность константным целочисленным литералом:
| Точность | Результат |
|---|---|
Литерал s (или отсутствует, что эквивалентно 0) | NUMERIC[number.IntegerPart + s, s] |
| Вычисляемая (не литерал) | Класс округляемого числа |
Когда точность задана константным литералом, результатом является NUMERIC, дробная часть которого равна этой точности, а целая часть совпадает с целой частью округляемого числа; это верно для любого литерала s: точность 0 (или её отсутствие) округляет до ближайшего целого, а отрицательная точность округляет в пределах целой части. Когда точность вычисляется, а не является литералом, результат сохраняет класс округляемого числа.
Язык
Для создания свойства, округляющего число, используется оператор ROUND.
Примеры
number = DATA NUMERIC[10,3](); //12345.678
rounded = ROUND(number()); //12346
rounded1 = ROUND(number(), 2); //12345.68
rounded2 = ROUND(number(), -2); //12300
FORM roundTest
PROPERTIES() number, rounded, rounded1, rounded2;