如果您正在格式化不是当前文化的本地货币的货币,那么格式化货币的正确方法是什么?
例如,如果我为 fr-FR 文化格式化美元,我是像 en-US 文化 ( $1,000.00 ) 还是作为 fr-FR 文化但将欧元符号更改为美元符号 ( 1 000,00美元)。也许还有别的东西(1 000,00 美元或1 000,00 美元)?
如果您正在格式化不是当前文化的本地货币的货币,那么格式化货币的正确方法是什么?
例如,如果我为 fr-FR 文化格式化美元,我是像 en-US 文化 ( $1,000.00 ) 还是作为 fr-FR 文化但将欧元符号更改为美元符号 ( 1 000,00美元)。也许还有别的东西(1 000,00 美元或1 000,00 美元)?
这里没有绝对的规则,但有几个指导原则:
如果您总是想显示符号,这里有一个实用程序类:
public class Utils {
public static SortedMap<Currency, Locale> currencyLocaleMap;
static {
currencyLocaleMap = new TreeMap<Currency, Locale>(new Comparator<Currency>() {
@Override
public int compare(Currency c1, Currency c2) {
return c1.getCurrencyCode().compareTo(c2.getCurrencyCode());
}
});
for (Locale locale : Locale.getAvailableLocales()) {
try {
Currency currency = Currency.getInstance(locale);
currencyLocaleMap.put(currency, locale);
}
catch (Exception e) {
}
}
}
public static String getAmountAsFormattedString(Double amount, Double decimals, String currencyCode) {
Currency currency = Currency.getInstance(currencyCode);
double doubleBalance = 0.00;
if (amount != null) {
doubleBalance = ((Double) amount) / (Math.pow(10.0, decimals));
}
NumberFormat numberFormat = NumberFormat.getCurrencyInstance(currencyLocaleMap.get(currency));
return numberFormat.format(doubleBalance);
}
public static String getCurrencySymbol(String currencyCode) {
Currency currency = Currency.getInstance(currencyCode);
return currency.getSymbol(currencyLocaleMap.get(currency));
}
}