Формат чисел java
Spring + thymeleaf. Мне нужно чтобы было два знака после запятой. (Вот так: 0.00)
В модели метод делает вот так:
double balanceStart = 0.0d;
public double getBalanceStart() {
String formattedDouble = String.format("%.2f", balanceStart);
return Double.parseDouble(formattedDouble.replace(',', '.'));
}
Если вывести в консоль formattedDouble и Double.parseDouble(formattedDouble.replace(',', '.') то будет: 0.00
Но когда фронт вызывает метод и получает это значение, он рисует на страничке: 0.0
<div class="col" th:each="report : ${reports}" th:text="${report.getBalanceStart()}"></div>
Что же я делаю не так?
Ответы (1 шт):
Для форматирования чисел Thymeleaf имеет целый набор утилит Expression Utility Objects. То что вам надо это Numbers объект. По названию функции, я так понимаю, вы работаете с деньгами и для этого можно воспользоваться форматированием для денег ...
<span th:text="${#numbers.formatCurrency(report.balance)}">$10.23</span>
Этот метод прост, но будет печатать доллар символ перед значением. Если вас это не устраивает , то можно просто отформатировать ваше значение испольуя #numbers.formatDecimal функцию ...
<span th:text="${#numbers.formatDecimal(report.balance, 0, 'COMMA', 2, 'POINT')}">10.00</span> руб.