2010-03-29 2 views
3

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

+0

На каком языке? –

+0

О, извините! Java – dmitrynikolaev

+0

Не уверен, почему это получило downvotes. Я думаю, что это справедливый вопрос. –

ответ

4
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

Спасибо за ответ! Но если я хочу сам использовать DecimalFormat & program (например, я не уверен, что это будет работать в GWT), возможно ли это? – dmitrynikolaev

0

Предполагая, что вы используете .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 

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

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

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