ОБСУЖДЕНИЕ

Округление в Xslt

5 ответов 15 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
У меня выполняются пару математических операций и получаются не целые числа, как округлить до двух знаков после запятой?
 
уже разобрался, вот так можно округлить:
Используя функцию format-number.
Например, format-number(3.1415926,'#.00') и на выходе получим 3.14
 
round если только нужны целые числа, он все до них и округляет по правилам округления
 
sax_ol
а не будет ли проще в таком случае использовать format-number(1.0056,'#.00') и если понадобится более точное округление или наооборот - добавлять (удалять) 1 ноль, а не два. и выглядит более наглядно.
 
округляет, поэтому я его и использую

есть еще две функции в xslt, которые округляют
первая, floor() - возвращает наибольшее целое меньшее аргумента, например floor(3.3) вернет 3.
вторая, ceiling() - возвращает наименьшее целое число, которое больше, чем число в аргументе, например, ceiling(3.3) вернет 4

итого в xslt получается 4 функции, совершающие округления.
 
А как мне вывести в Xslt округленную сумму?
Например:
Есть три числа 1.013, 1.025, 1.036
Мне надо вывести эти три числа, но с двумя знаками после запятой и сумму (sum(блок)) этих округленных чисел, тоже два знака после запятой.
Округляю при помощи round, получаю: 1.01, 1.03, 1.04
Делаю тоже самое для суммы, но итог получается с отклонением, так как функция суммы сначала суммирует значения и только потом можно округлить = 3,07 - ошибка на копейку, если чисел будет больше, расхождение будет увеличиваться.....Как быть?