当前位置: 移动技术网 > 移动技术>移动开发>Android > Android 国际货币格式化的示例代码

Android 国际货币格式化的示例代码

2019年07月24日  | 移动技术网移动技术  | 我要评论

简评:今天介绍下 android 中国际货币格式化的一个小小知识点。

目前为止,货币格式化最简单的方式是调用 numberformat.getcurrencyinstance() 获得 numberformat 实例来把数字格式化为货币格式的字符串(当然也可以把字符串转换成数字)。可以根据当前设备的位置来获取 java.util.currency 实例再以此进行货币的格式化。

但如果我们的应用只接受特定的几种货币,那这种随着用户设备位置而修改货币格式就不是一个好的做法。

你可能会说「这简单啊,那就在国内默认显示人民币,其他国家就显示美元嘛」。

嗯,你很有想法。。。

这里就要讲到这篇文章的重点了。

假设你给美国地区展示的是 $1,那他们会默认这是 1 美元,这没问题。

但世界上还有超过二十个国家和地区的本地货币也叫 dollar ($),比如加拿大、澳大利亚和新西兰。这时候如果你还是展示 $1,那这些国家的用户就会默认这是指他们的货币,这就会造成误解,让用户觉得你们的收费不对。

因此,如果当前用户是在加拿大的,而商品价格需要为美元,那么在进行格式化时还需要明确符号,以表明显示的是美元而不是加元。

下面是 kotlin 代码的一个例子:

class mainactivity : appcompatactivity() {
 
  override fun oncreate(savedinstancestate: bundle?) {
    super.oncreate(savedinstancestate)
    setcontentview(r.layout.activity_main)
 
    textview1.text = formatcurrency(1f, currency_us_dollars, language_english, country_us)
    textview2.text = formatcurrency(1f, currency_us_dollars, language_english, country_canada)
    textview3.text = formatcurrency(1f, currency_us_dollars, language_english, country_australia)
  }
 
  private fun formatcurrency(amount: float, currency: string, language: string, country: string) =
      currencyinlocale(currency, language, country).format(amount)
 
  private fun currencyinlocale(
      currencycode: string,
      language: string,
      country: string = "",
      variant: string = ""): numberformat =
      locale(language, country, variant).let {
        numberformat.getcurrencyinstance(it).apply {
          currency = currency.getinstance(currencycode)
        }
      }
 
  companion object {
    private const val currency_us_dollars: string = "usd"
    private const val language_english: string = "en"
    private const val country_us: string = "us"
    private const val country_canada: string = "ca"
    private const val country_australia: string = "au"
  }
}

展示效果,从上到下分别是美国、加拿大和澳大利亚:

这里对于加拿大显示 us$,而澳大利亚显示 usd。虽然两者都能理解,但能符合各语言环境的具体情况当然还是更好的。

虽然这可能只是一个小知识点,但我个人觉得知道了还是蛮有用的。

原文: currency curiosities

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网