当前位置: 首页 > 知识库问答 >
问题:

Android货币符号排序

楚天宇
2023-03-14

我得到的设备与非英语语言环境,英语货币html" target="_blank">格式如下:

1 $

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

€ 1

使用

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

在留档中找到:

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

返回区域设置中该货币的本地化货币符号。也就是说,给定“USD”和区域设置。在美国,你会得到“$”,但如果是“USD”和非美国地区,你会得到“US$”。

如果语言环境只指定了一种语言而不是一种语言,并且指定了一个国家(例如locale.JAPANESE或{new locale(“en”,“)}而不是locale)。返回ISO 4217货币代码。

如果没有特定于语言环境的货币符号,则返回ISO 4217货币代码。

方法不同,但可能相关。为什么我的设备的区域设置会对货币中的符号排序产生影响?无论我使用哪种语言环境,1美元都是不正确的。

有办法改变这一点吗?

共有1个答案

危文乐
2023-03-14

该方法的行为是正确的。

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

如果您总是希望货币格式与美国化的预期相匹配,请将区域设置为Locale. US。如果您希望货币以本地化的方式显示,请保持您的实现不变。

请参阅本简要指南(微软提供,不少于):

货币格式

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

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

 类似资料:
  • 问题内容: 我正在使用我给定的语言环境获取自定义货币格式。但是,这始终包含我不需要的货币符号,我只想要给定语言环境的正确货币数字格式而没有货币符号。 做一个抛出一个异常.. 问题答案: 以下作品。这有点丑陋,但可以履行合同: 您还可以从货币格式中获取模式,删除货币符号,然后从新模式中重构新格式:

  • 问题内容: 存在以下格式的一些 现有代码 ,用于格式化数值: 请注意,我 无法更改代码本身 -我只能更改提供给代码的格式模式。 输出默认语言环境的货币符号的格式模式是什么?本质上,我想实现以下输出: 问题答案: 考虑到您所给的限制,我认为这是不可能的。要获取当前语言环境的货币符号,您需要最少的代码。 如果绝对没有办法向程序中添加代码,则最好使用已建立的符号“ currency ”(¤)。正是出于这

  • 让我们从一段简单的代码开始,用格式化货币: 打印:。 如果你想格式化货币,这是可以的。 但是我想做的是为给定的货币ISO 4217代码(例如JPY)获得货币符号(例如¥)。 我的第一个猜测是尝试使用: 但这为构造函数(en_US)中给定的区域设置提供了货币符号,在我的例子中是$。 有没有办法通过PHP中的货币ISO 4217代码获得货币符号?

  • 问题内容: 我有一个字符串,其中包含格式货币值(如)和多个值(以逗号分隔)。 我想提取并处理所有货币值,但无法为此找到正确的正则表达式,这是我尝试过的 输出为: 有人可以帮我这个吗? 问题答案: 您需要一个正则表达式“向后看” ,它匹配但确实消耗: 这是您现在可以使用的测试用例: 输出:

  • 问题内容: 有没有一种格式可以如下设置小数: 如果是整数,则省略小数部分。否则,格式要保留两位小数。 问题答案: 我建议使用java.text包: 这具有特定于区域设置的额外好处。 但是,如果必须的话,如果它是一整美元,则截断要返回的字符串:

  • 我试过... 但那就不允许便士条目了。 我想要增量按钮控制在英镑上升,但仍然想要输入便士的能力。 谢谢,1DMF