2010-01-13 2 views

ответ

21

Вот один я всегда в конечном итоге с помощью либо в классе Java или через FMT: FormatNumber JSTL тег:

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

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

2

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

Edit: Вы могли бы также бросить результат NumberFormat.getCurrencyInstance() для DecimalFormat и настроить его с вашими предпочтениями.

+0

Вероятно, вы правы, но мое приложение должно быть в состоянии е валюта ormat в банках. Не было бы слишком сложно реализовать формирование для всех этих мест? –

30

Для этого требуется небольшая настройка 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() не может возвращать значение для всех языков для всех систем, но он должен работать на основных из них (и я думаю, что это имеет разумный запасной вариант на свой собственный, так что вы не должны делать что-либо)

1

Try:

NumberFormat.getCurrencyInstance(Locale.CANADA);

 Смежные вопросы

  • Нет связанных вопросов^_^