need space between currency symbol and amount

Seeker picture Seeker · Jul 12, 2011 · Viewed 7.9k times · Source

I'm trying to print INR format currency like this:

NumberFormat fmt = NumberFormat.getCurrencyInstance();
fmt.setCurrency(Currency.getInstance("INR"));
fmt.format(30382.50);

shows Rs30,382.50, but in India its written as Rs. 30,382.50(see http://www.flipkart.com/) how to solve without hardcoding for INR?

Answer

Bala R picture Bala R · Jul 12, 2011

It's a bit of a hack but in a very similar situation, I used something like this

NumberFormat format = NumberFormat.getCurrencyInstance(new Locale("en", "in"));
String currencySymbol = format.format(0.00).replace("0.00", "");
System.out.println(format.format(30382.50).replace(currencySymbol, currencySymbol + " "));

all the currencies I had to deal with involved two decimal places so i was able to do "0.00" for all of them but if you plan to use something like Japanese Yen, this has to be tweaked. There is a NumberFormat.getCurrency().getSymbol(); but it returns INR instead for Rs. so that cannot be used for getting the currency symbol.