Sometimes, while developing our API's we need to give the currency details while formatting a currency. The details of the currency are like what Symbol to use, did we have a separator, what is the number of decimal places, should we place the symbol before or after the formatted number.
This can easily be achieved by using Java API's rather then storing it in the database. Here is the java code that generates all these details. It would be very much helpful if we want to return this information in the API related to currency.
// Source Code
Locale locale = new Locale("ja", "JP");
Currency currency = Currency.getInstance("JPY");
boolean bPre = false;
int ndx = -1;
double price = 12345.67;
DecimalFormatSymbols df = DecimalFormatSymbols.getInstance(locale) ;
df.setCurrency(currency);
NumberFormat nF = NumberFormat.getCurrencyInstance(locale);
nF.setCurrency(currency);
System.out.println("CURRENCY SYMBOL = " + df.getCurrencySymbol());
System.out.println("DECIMAL SEPARATOR = " + df.getDecimalSeparator());
System.out.println("GROUP SEPARATOR = " + df.getGroupingSeparator());
System.out.println("CURRENCY CODE = " + df.getInternationalCurrencySymbol());
System.out.println("DECIMAL PLACE = " + nF.getMaximumFractionDigits());
String sLP = ((DecimalFormat) nF).toLocalizedPattern();
ndx = sLP.indexOf('\u00A4'); // currency sign
if (ndx > 0) {
bPre = false;
} else {
bPre = true;
}
System.out.println("CURRENCY PLACE BEFORE = " + bPre);
System.out.println("FORMATTED CURRENCY: " + nF.format(price));
// Output
// For JAPAN Locale ja_JP and JPY Currency Code
This can easily be achieved by using Java API's rather then storing it in the database. Here is the java code that generates all these details. It would be very much helpful if we want to return this information in the API related to currency.
// Source Code
Locale locale = new Locale("ja", "JP");
Currency currency = Currency.getInstance("JPY");
boolean bPre = false;
int ndx = -1;
double price = 12345.67;
DecimalFormatSymbols df = DecimalFormatSymbols.getInstance(locale) ;
df.setCurrency(currency);
NumberFormat nF = NumberFormat.getCurrencyInstance(locale);
nF.setCurrency(currency);
System.out.println("CURRENCY SYMBOL = " + df.getCurrencySymbol());
System.out.println("DECIMAL SEPARATOR = " + df.getDecimalSeparator());
System.out.println("GROUP SEPARATOR = " + df.getGroupingSeparator());
System.out.println("CURRENCY CODE = " + df.getInternationalCurrencySymbol());
System.out.println("DECIMAL PLACE = " + nF.getMaximumFractionDigits());
String sLP = ((DecimalFormat) nF).toLocalizedPattern();
ndx = sLP.indexOf('\u00A4'); // currency sign
if (ndx > 0) {
bPre = false;
} else {
bPre = true;
}
System.out.println("CURRENCY PLACE BEFORE = " + bPre);
System.out.println("FORMATTED CURRENCY: " + nF.format(price));
// Output
//For vi_VN Locale and VND
currency code.
CURRENCY SYMBOL = đ
CURRENCY SYMBOL = đ
DECIMAL SEPARATOR = ,
GROUP SEPARATOR = .
CURRENCY
CODE = VND
DECIMAL
PLACE = 0
CURRENCY PLACE
BEFORE = false
FORMATTER CURRENCY: 12.346 đ
// For India
Locale hi_IN and INR Currency Code
CURRENCY SYMBOL = रू
DECIMAL SEPARATOR = .
GROUP SEPARATOR = ,
CURRENCY
CODE = INR
DECIMAL
PLACE = 2
CURRENCY PLACE
BEFORE = trueFORMATTED CURRENCY: रू १२,३४५.६७
// For JAPAN Locale ja_JP and JPY Currency Code
CURRENCY SYMBOL = ¥
DECIMAL SEPARATOR = .
GROUP SEPARATOR = ,
CURRENCY
CODE = JPY
DECIMAL
PLACE = 0
CURRENCY PLACE
BEFORE = true
FORMATTED CURRENCY: ¥12,346