DecimalFormat для форматирования цены в Java - PullRequest
4 голосов
/ 29 марта 2010

Можно ли отформатировать цену в соответствии с такими правилами, используя DecimalFormat в Java: 50000 => 50 000 руб. 00 коп.

Ответы [ 2 ]

6 голосов
/ 29 марта 2010
NumberFormat.getCurrencyInstance() 

, вероятно, делает то, что вы хотите.

Он может использовать символы вместо слов для рублей и копеек.

Вот рабочий пример:

    final NumberFormat currencyInstance = NumberFormat.getCurrencyInstance();
    currencyInstance.setCurrency(Currency.getInstance("RUB"));
    System.out.println(currencyInstance.format(50000));

Этот вывод для меня:

RUB50,000.00

что не совсем то, что вы просили. Но это только начало.

Эта альтернатива

final NumberFormat currencyInstance = NumberFormat.getCurrencyInstance(new Locale("ru", "RU"));
System.out.println(currencyInstance.format(50000.01));

дал мне

50 000,01 руб

0 голосов
/ 29 марта 2010

Предполагая, что вы используете .Net, вы можете отформатировать вывод с помощью;

<%
  String format = "<p>{0:#,0 rub .00 kop}</p>";
  Response.Write(String.Format(format, 98765.4321));
  Response.Write(String.Format(format, 98765.4));
  Response.Write(String.Format(format, 987654321));
  Response.Write(String.Format(format, 0.12345));
  Response.Write(String.Format(format, 0.1));
  Response.Write(String.Format(format, 0));
%>

Какие выходы;

 98,765 rub .43 kop
 98,765 rub .40 kop
 987,654,321 rub .00 kop
 0 rub .12 kop
 0 rub .10 kop
 0 rub .00 kop

Не знаете, как избавиться от десятичного разряда, хотя и пропуститеесли коп == ноль.

Вы также можете отформатировать строки + / ve - / ve иначе;http://blog.stevex.net/string-formatting-in-csharp/

...