Is it possible to format price according to rules like this using DecimalFormat in Java: 50000 => 50 000 rub 00 kop
+1
A:
NumberFormat.getCurrencyInstance()
probably does what you want.
It might use symbols instead of words for roubles and kopeks.
Here's a working example:
final NumberFormat currencyInstance = NumberFormat.getCurrencyInstance();
currencyInstance.setCurrency(Currency.getInstance("RUB"));
System.out.println(currencyInstance.format(50000));
This output for me:
RUB50,000.00
which is not exactly what you asked for. But it is a start.
This alternative
final NumberFormat currencyInstance = NumberFormat.getCurrencyInstance(new Locale("ru", "RU"));
System.out.println(currencyInstance.format(50000.01));
gave me
50 000,01 руб
Steve McLeod
2010-03-29 10:57:28
blackliteon
2010-03-29 11:45:17
A:
Assuming you are using .Net you can format the output using;
<%
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));
%>
Which outputs;
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
Not sure how to get rid of the decimal place though and omit if kop == zero.
You can also format +/ve -/ve strings differently see; http://blog.stevex.net/string-formatting-in-csharp/
Dave Anderson
2010-03-29 11:10:03