Как я могу получить NumberFormat.getCurrencyInstance()
для печати отрицательных значений курса доллара США с знаком минуса?Формат отрицательного значения в долларах США со знаком минуса, а не скобки (Java)
ответ
Вот один я всегда в конечном итоге с помощью либо в классе Java или через FMT: FormatNumber JSTL тег:
DecimalFormat format = new DecimalFormat("$#,##0.00;$-#,##0.00");
String formatted = format.format(15.5);
Это всегда производит по крайней мере, $ 0.00 и соответствует при отображении. Кроме того, там, где это необходимо, есть тысячи сексераторов. Вы можете переместить знак минуса перед значком доллара, если это ваше требование.
Возможно, лучше всего создать свой собственный DecimalFormat
, если вы хотите использовать определенный формат, а не полагаться на значение по умолчанию.
Edit: Вы могли бы также бросить результат NumberFormat.getCurrencyInstance() для DecimalFormat
и настроить его с вашими предпочтениями.
Для этого требуется небольшая настройка DecimalFormat, возвращаемая NumberFormat.getCurrencyInstance()
, чтобы сделать это не зависящим от локали образом образом. Вот что я сделал (проверено на Android):
DecimalFormat formatter = (DecimalFormat)NumberFormat.getCurrencyInstance();
String symbol = formatter.getCurrency().getSymbol();
formatter.setNegativePrefix(symbol+"-"); // or "-"+symbol if that's what you need
formatter.setNegativeSuffix("");
IIRC, Currency.getSymbol()
не может возвращать значение для всех языков для всех систем, но он должен работать на основных из них (и я думаю, что это имеет разумный запасной вариант на свой собственный, так что вы не должны делать что-либо)
Try:
NumberFormat.getCurrencyInstance(Locale.CANADA);
NumberFormat.getCurrencyInstance(Locale.UK);
Вероятно, вы правы, но мое приложение должно быть в состоянии е валюта ormat в банках. Не было бы слишком сложно реализовать формирование для всех этих мест? –