Как мне получить NumberFormat.getCurrencyInstance()
для печати отрицательных значений курса доллара США со знаком минус?
Отформатируйте отрицательную сумму USD с знаком минус, а не скобками (Java)
Ответ 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);