Подтвердить что ты не робот

Отформатируйте отрицательную сумму USD с знаком минус, а не скобками (Java)

Как мне получить NumberFormat.getCurrencyInstance() для печати отрицательных значений курса доллара США со знаком минус?

4b9b3361

Ответ 1

Вот один, который я всегда использую либо в классе java, либо через тег fmt: formatNumber jstl:

DecimalFormat format = new DecimalFormat("$#,##0.00;$-#,##0.00");
String formatted = format.format(15.5);

Он всегда производит не менее $0.00 и согласован при отображении. Кроме того, там, где это необходимо, есть тысячи сексераторов. Вы можете переместить знак минуса перед значком доллара, если это ваше требование.

Ответ 2

Для этого требуется небольшая настройка DecimalFormat, возвращенная NumberFormat.getCurrencyInstance(), чтобы сделать это не зависящим от языка образом. Вот что я сделал (протестировал на Android):

DecimalFormat formatter = (DecimalFormat)NumberFormat.getCurrencyInstance();
String symbol = formatter.getCurrency().getSymbol();
formatter.setNegativePrefix(symbol+"-"); // or "-"+symbol if that what you need
formatter.setNegativeSuffix("");

IIRC, Currency.getSymbol() может не возвращать значение для всех локалей для всех систем, но он должен работать для основных (и я думаю, что он имеет разумный запас по своему усмотрению, поэтому вам не нужно ничего делать )

Ответ 3

Вероятно, лучше всего создать собственный DecimalFormat, если вам нужен конкретный формат, а не полагаться на значение по умолчанию.

Изменить: Возможно, вы также можете передать результат NumberFormat.getCurrencyInstance() на DecimalFormat и настроить его на свои настройки.

Ответ 4

Попробуйте:

NumberFormat.getCurrencyInstance(Locale.CANADA);

Ответ 5

NumberFormat.getCurrencyInstance(Locale.UK);