#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.