Thymeleaf — процент форматирования только с двумя десятичными числами

#java #formatting #thymeleaf #percentage #bigdecimal

#java #форматирование #thymeleaf #процент #bigdecimal

Вопрос:

Я пытаюсь форматировать процент с помощью Thymeleaf. Но при значении%, подобном 99,99, thymeleaf форматирует это значение в 100. И я этого не хочу.

Я сделал это:

Сторона Java

 BigDecimal percentage = (a).multiply(new BigDecimal(100)).divide(b, 3, RoundingMode.HALF_DOWN);
  

Сторона Thymelaf

 th:text="${#numbers.formatDecimal(percentage, 1, 'POINT', 2, 'COMMA')}"
  

Если процент равен 99,99, Thymeleaf дает мне 100,00

Почему?

Ответ №1:

Это происходит потому, что ваше значение percentage scale на стороне Java больше, чем decimalDigits на стороне Thymeleaf.

Попробуйте установить для него то же значение (равное 2):

 BigDecimal percentage = (a).multiply(new BigDecimal(100)).divide(b, 2, RoundingMode.HALF_DOWN);
  

А также, как если бы вы использовали percentage поле только для отображения процентов, я думаю, вам не нужен thousandsPointType параметр ( 'POINT' в вашем случае), потому что его значение никогда не будет больше 100.