我正在使用非英语语言环境的设备,英语货币形成如下:
1 $
如果我有英语语言环境,我会获得欧元货币:
€1
使用
format.setCurrency(Currency.getInstance(currency));
return format.format(amount);
在文档中找到:
http://developer.android.com/reference/java/util/Currency.html#getSymbol()
在区域设置中返回此货币的本地化货币符号。也就是说,给定“USD”和Locale.US,你得到“$”,但是给出“USD”和非美国语言环境,你就得到“US $”。
如果语言环境仅指定语言而不是语言和国家/地区(例如Locale.JAPANESE或{new Locale(“en”,“”)}而不是Locale.JAPAN或{new Locale(“en”, “US”)}),返回ISO 4217货币代码。
如果没有特定于区域设置的货币符号,则返回ISO 4217货币代码。
方法不一样但可能相关。为什么它会使我的设备的区域设置与货币中的符号排序有所区别?无论我使用哪种语言环境,1 $都是错误的。
有没有办法改变这个?
答案 0 :(得分:2)
该方法的行为是正确的。
并非所有国家/地区都希望货币符号在金额之前。
如果您始终希望货币格式与美国期望相匹配,请将区域设置保留为Locale.US
。如果您希望以本地化方式显示货币,请按原样保留实施。
请参阅此简要指南(来自Microsoft,不能少):
我猜你可能想要实现的是以适合其语言环境的格式显示货币?如果是这种情况,请在调用方法之前将区域设置与您正在使用的货币相匹配。
请注意,格式甚至可能在同一个国家/地区有所不同。在加拿大,看到说英语的人使用50.00美元的格式是相当普遍的,而法裔加拿大人可能会使用50,00美元。
另见UX上的这个问题: