Good day, in database there is table with houses for sale records. For each house record there is currency code (in ISO 4217 format) field. Is it possibly to somehow get currenc
There is a code-Snippet in https://stackoverflow.com/a/15343675/702345
But be careful:
Never blindly append currency symbols (that assumes that append is the locale-appropriate position of the currency symbol). I18n-unsafe practice. Same with the "#¤" string (for locales with prefix currency symbol, this is incorrect)
You can use Currency class and DecimalFormat class for achieve your requirement. In following example, # represents number and ¤ represents currency symbol, you can find relevant format parameters in java API doc for DecimalFormat class.
Currency currency = Currency.getInstance("USD");
DecimalFormat decimalFormat = new DecimalFormat("#¤");
decimalFormat.setCurrency(currency);
System.out.println(decimalFormat.format(234));
@artjomka
I was able to reproduce your problem by setting my default locale to Latvia
Locale.setDefault(new Locale("lv","LV"));
Currency c = Currency.getInstance("EUR");
System.out.println(c.getSymbol());
This gave me the output of "EUR".
However, by leaving setting my locale to Uk (already my default) I get the symbol for the Euro(€).
Locale.setDefault(Locale.UK);
Currency c = Currency.getInstance("EUR");
System.out.println(c.getSymbol());
You can use the Currency
object's getSymbol method.
What symbol is used depends on the Locale which is used See this and this.
Update, Jan 2016: The links are now dead. But they were specific to Java 1.4/5 so not really relevant anymore. More details on currency formatting can be found in https://docs.oracle.com/javase/tutorial/i18n/format/numberFormat.html. The links can be found on the WayBackEngine though.
You should call Currency.getSymbol(Locale)
rather than Currency.getSymbol()
(without a locale object). Setting the default locale gives you the behavior that you want.