XSLT — Округление до двух знаков после запятой

#xslt #xslt-2.0

Вопрос:

Существует требование округлять значение(всегда) до двух знаков после запятой. это означает, что число 8.3333333 должно стать 8.34. Функции округления и форматирования чисел, похоже, не достигают этого. У кого-нибудь есть идеи о том, как получить желаемый результат с помощью преобразования xslt, пожалуйста?

Комментарии:

1. Что произойдет с 8.3 или 8.30 ?

Ответ №1:

Округление числа с точностью до двух знаков после запятой:

 ceiling(100*$value) div 100  

Если вам нужны конечные нули (т. Е. строка, а не число), то заверните это format number() .

Комментарии:

1. Могут быть крайние случаи, когда это безопаснее использовать xs:decimal , чем xs:double арифметику: ceiling(100*xs:decimal($value)) div 100 . Я не уверен в этом, но десятичная дробь кажется более надежной.