Числовые операторы и функции
Числовые операторы выполняют функции, аналогичные знакам арифметических одноместных и двуместных операций:
· op:numeric-add – сложение;
· op:numeric-subtract – вычитание;
· op:numeric-multiply – умножение;
· op:numeric-divide – деление;
· op:numeric-integer-divide – деление нацело;
· op:numeric-mod – взятие по модулю;
· op:numeric-unary-plus – унарный плюс;
· op:numeric-unary-minus – унарный минус.
Параметрами и возвращаемыми значениями являются данные типов xs:integer, xs:decimal, xs:float и xs:double (тип numeric), а также производных от них типов. Для последних двух операторов определен один аргумент типа, для остальных операторов – два аргумента типа numeric. Если типы аргументов не совпадают, перед выполнением операции выполняется преобразование к более общему типу.
Примеры числовых операторов:
1. op:numeric-add(12, 5) – возвращает значение 17.
2. op:numeric-divide(12.3, 5) – преобразует второй аргумент в данное типа xs:double и возвращает значение 2.46 типа xs:double.
Операторы сравнения выполняют функции, аналогичные функциям операторов в выражениях сравнения:
· op:numeric-equal – сравнение на равенство;
· op:numeric-less-than – сравнение на меньше, чем;
· op:numeric-greater-than – сравнение на больше, чем.
Эти операторы возвращают true или false в зависимости от результата сравнения.
Примеры операторов сравнения:
1. op:numeric-equal(12, 12.0) – возвращает значение true.
2. op:numeric-less-than(5, 8) – возвращает значение false.
В числовые функции XPath входят:
· fn:abs($arg as numeric?) as numeric? – возвращает абсолютное значение заданного в аргументе числа;
· fn:ceiling($arg as numeric?) as numeric? – возвращает наименьшее целое, которое не меньше, чем заданное в аргументе число;
· fn:floor($arg as numeric?) as numeric? – возвращает наибольшее целое, которое не больше, чем заданное в аргументе число;
· fn:round($arg as numeric?) as numeric? – возвращает заданное в аргументе число, округленное до ближайшего целого числа;
· fn:round-half-to-even($arg as numeric?, $precision as xs:integer) as numeric? – округляет заданное в первом аргументе число; в сторону ближайшего числа с точностью, заданной во втором аргументе. Если второй аргумент больше 0, то это число показывает точность справа от десятичной точки, иначе – слева. Если последняя отбрасываемая цифра равна 5, выполняется округление до ближайшего четного числа. Если функция задана с одним аргументом, предполагается, что значение второго аргумента равно 0.
Примеры числовых функций:
1. ceiling(3.14) – возвращает число 4.
2. floor(3.14) – возвращает число 3.
3. round(3.14) – возвращает число 3.
4. round-half-to-even(3.145, 2) – возвращает число 3.14.
5. round-half-to-even(3145, -2) – возвращает число 3100.
6. round-half-to-even(3.5, 2) – возвращает число 4.
Дата добавления: 2015-03-19; просмотров: 644;