xslt сумма и круглая синтаксическая помощь необходима - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь вывести и суммировать часы на человека в основной части моего xslt, а затем также суммировать часы в трейлере. Общая сумма трейлера и общая сумма тела не совпадают, они отклоняются на 0,01 (из-за округления, который я предполагаю?). Я не уверен, какой должен быть правильный синтаксис, чтобы обе части равнялись одной и той же сумме часов. Я искал, но не могу найти то, что я ищу, любая помощь или руководство приветствуется!

Вот мое тело xslt - это возвращает 37420050 = 374,200.50:

template match = "wd: Report_Data / wd: Report_Entry"

xsl: value-of select = "format-number (sum (wd: Payroll_Results / wd: Period_Creditable_Hours) * 100, '0000000000; -000000000')"

Вот мой трейлер xslt - это возвращает 37420049 - 374,200.49:

xsl: value-of select = "format-number (sum (wd: Report_Data / wd: Report_Entry / wd: Payroll_Results / wd: Period_Creditable_Hours) * 100, '0000000000; -000000000')"

Спасибо, Дженн

1 Ответ

0 голосов
/ 14 сентября 2018

В XSLT 2.0 у вас есть возможность использовать десятичную арифметику вместо плавающей запятой.Это невозможно в XSLT 1.0.Чтобы использовать десятичную арифметику, приведите операнды умножения к xs:decimal, например,

 sum(wd:Payroll_Results/wd:Period_Creditable_Hours)/xs:decimal() * 100) 

Даже с десятичной арифметикой функция format-number() может выполнить некоторое округление, которое может привести к тому, что числа не будут суммироваться до 100.%.Возможно, вам придется проверить, существуют ли соглашения или правила бухгалтерского учета, которые ограничивают решение этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...