2015-01-21 2 views
1

XPath в XQuery: Дробный DigitsXPath в XQuery: Дробный Digits

У меня есть выход XSD, который выглядит следующим образом:

<xs:simpleType name="Money"> 
    <xs:restriction base="xs:decimal"> 
     <xs:fractionDigits value="2"/> 
    </xs:restriction> 
</xs:simpleType> 

Из этого я использую statments

fn:sum($Accounts/in:IndividualAcct[in:AcctType = 'AttcRec']/in:balance * in:amount) 

Но мое суммирование в поле, определенное с помощью определения , приведено выше:

36745.770000000004 

То, что я ищу только 2 дробные цифры

Так что я интересно, могу ли я использовать что-то вроде формата струне или Fn: строка

Если да, то я могу совместить это с моей предыдущей fn: sum string, указанная выше

Как это будет выглядеть?

Благодаря

+0

возможно дубликат [Как я могу форматировать десятичной в XQuery?] (Http://stackoverflow.com/questions/5838562/how-can-i -формат-a-decimal-in-xquery) – JLRishe

+0

также относится: http://stackoverflow.com/questions/5887784/formatting-the-output-of-the-sum-function-in-xquery-xslt-xpath –

ответ

2

Вы не указали, есть ли у вас поддержка XQuery 3.0. Если да, то fn:format-number($number, $picture) является то, что вы ищете:

format-number(36745.770000000004, '.00') 

Результат: 36745.77

Как @MichaelKay предложено в комментариях, альтернатива, которая также работает в XQuery 1.0 будет использовать round-half-to-even($number, $precision) ограничить точность до двух десятичных цифр. Номер будет автоматически отливают в строку, если необходимо:

round-half-to-even(36745.770000000004, 2) 
+0

Can вы комбинируете это с командой fn: sum и как это будет выглядеть? – user3192053

+0

Вы можете использовать произвольные выражения, возвращающие целое число в качестве первого параметра. Просто поставьте здесь весь вызов функции, например 'format-numer (sum (...), '.00')'. Помните, следует ли использовать префикс пространства 'fn:' - вопрос стиля и дебатов (обычно вы можете использовать его для обеих функций или опустить его). –

+0

Обратите внимание, что в XQuery 1.0 вы можете использовать 'round-half-to-even (sum (...), 2)' –

Смежные вопросы