java – Android货币符号排序

我正在使用非英语语言环境的设备,英语货币形成如下:

1美元

如果我有英语语言环境,我会得到欧元货币:

1欧元

运用

format.setCurrency(Currency.getInstance(currency));
return format.format(amount);

在文档中找到:

http://developer.android.com/reference/java/util/Currency.html#getSymbol()

Returns the localized currency symbol for this currency in locale. That is, given “USD” and Locale.US, you’d get “$”, but given “USD” and a non-US locale, you’d get “US$”.

If the locale only specifies a language rather than a language and a country (such as Locale.JAPANESE or {new Locale(“en”, “”)} rather than Locale.JAPAN or {new Locale(“en”, “US”)}), the ISO 4217 currency code is returned.

If there is no locale-specific currency symbol, the ISO 4217 currency code is returned.

是不一样的方法,但可能相关.为什么它会使我的设备的区域设置与货币中的符号排序有所区别?无论我使用哪种语言环境,1 $都是不正确的.

有没有办法改变这个?

解决方法:

该方法的行为是正确的.

并非所有国家都希望货币符号在金额之前.

如果您始终希望货币格式与美国期望值匹配,请将区域设置保留为Locale.US.如果您希望货币以本地化方式显示,请保持实施不变.

请参阅此简要指南(来自Microsoft,不能少):

Globalisation Step-by-Step

我想你可能想要实现的是以适合其语言环境的格式显示货币?如果是这种情况,只需在调用方法之前将区域设置与您正在使用的货币相匹配.

请注意,格式甚至可以在同一个国家/地区有所不同.在加拿大,看到说英语的人使用50.00美元的格式是相当普遍的,而法裔加拿大人可能使用50,00美元.

另见UX上的这个问题:

https://ux.stackexchange.com/questions/22574/where-to-place-currency-symbol-when-localizing-and-what-to-do-with-odd-symbols

上一篇:Python – 将货币代码转换为其符号


下一篇:使用javascript格式化货币