Почему JSTL выдает двойное значение 99 как 99.0 (не 99.00), используя $ {dollarAmount}? - PullRequest
2 голосов
/ 18 апреля 2011

У меня есть double значение dollarAmount, которое имеет значение 99:

double dollarAmount = 99;

Когда я пытаюсь вывести его на свою страницу, используя этот код:

<c:out value="${dollarAmount}"/>

Это выглядит как 99.0.

Поскольку оно представляет финансовую стоимость, я хочу вывести его либо как

99

или как

99.00

Есть ли способ заставить <c:out> сделать это?

Ответы [ 4 ]

4 голосов
/ 18 апреля 2011

Почему JSTL выдает двойное значение 99, равное 99,0

При печати данных бэкэнда в ответ HTML все не-String объекты Java по умолчанию преобразуются в String. HTML не может быть представлен иначе. Вы видите 99.0, потому что это результат по умолчанию Double#toString(double). Форматирование соответствует документации .

.

Для форматирования валют лучше использовать <fmt formatNumber>, для которого type установлено на currency.

<fmt:formatNumber value="${dollarAmount}" type="currency" currencySymbol="$" />

Это будет отображаться как

$99.00
2 голосов
/ 18 апреля 2011

Я предлагаю использовать тег FormatNumber fmt

что-то вроде

<fmt:formatNumber type="number" maxIntegerDigits="2" value="${param.num}"/>
1 голос
/ 18 апреля 2011

Использование fmt:formatNumber

0 голосов
/ 18 апреля 2011

В java лучший способ распечатать определенное количество цифр - printf, сторонняя утилита из https://sharkysoft.com/, доступная в рамках GNU GPL, или за плату для коммерческого использования. Вот страница JavaDoc: http://sharkysoft.com/archive/printf/docs/javadocs/lava/clib/stdio/doc-files/specification.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...