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?
In English, put the currency symbol before the number with no space. For your example, put in a comma separator for the thousand.
In English, the sign immediately precedes the value (for instance, €10); in most other European languages, it follows the value, usually but not always with an intervening space (for instance, 10 €, 10€). U+20A0 ₠ EURO-CURRENCY SIGN (predecessor).
The dollar sign is placed to the right of the dollar figure. Use a non-breaking space after the dollar figure, and between the dollar sign and the country code: 25,99 $ US.
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.
See if this works:
DecimalFormat fmt = (DecimalFormat) NumberFormat.getInstance();
fmt.setGroupingUsed(true);
fmt.setPositivePrefix("Rs. ");
fmt.setNegativePrefix("Rs. -");
fmt.setMinimumFractionDigits(2);
fmt.setMaximumFractionDigits(2);
fmt.format(30382.50);
Edit: Fixed the first line.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With