java - 安卓货币符号排序

标签 java android format currency

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

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,不少于此):

Currency Formatting

我猜您可能想要实现的目标是以适合其区域设置的格式显示货币?如果是这种情况,只需将区域设置与您使用的货币相匹配,然后再调用该方法。

请注意,格式在同一国家/地区甚至可能有所不同。在加拿大,说英语的人使用 $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

关于java - 安卓货币符号排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12490793/

相关文章:

Javascript 与 jquery datepicker 使用 knockout

android - 在 Android 中格式化多行 TextView 的第一行

java - 将 JSON 文件读入集合,最佳实践

java - 在 android 中有阴影的目标上拖放后拖放回到原来的位置?

android - 无法通过 ScrollView 标签滚动线性布局

android - 在 android 关机时调用 onDestroy

java - jsp中的日期格式

java - 优雅地处理 SQL 空参数

java - 使用 Firestore Transaction 更新多个文档

javascript - 在 SQLite 中生成平均值