Формат чисел 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 шт):

Автор решения: Slava Ivanov

Для форматирования чисел 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> руб.
→ Ссылка