【发布时间】:2016-02-12 15:06:58
【问题描述】:
最终用户会获得一份货币列表。他们可以随时选择他们感兴趣的其中一项。因此,java.text.NumberFormat 中使用的语言环境需要根据所选货币进行更改。这似乎并不简单。
Locale locale = new Locale("en", "US");
NumberFormat decimalFormat = NumberFormat.getCurrencyInstance(locale);
decimalFormat.setGroupingUsed(true);
decimalFormat.setCurrency(Currency.getInstance("USD"));
System.out.println(decimalFormat.format(BigDecimal.valueOf(1.12)));
上面的代码将显示正确的货币值$1.12。由于货币(和语言环境)是在运行时根据用户的偏好动态确定的,如果将USD 更改为不同的东西,例如GBP,那么相关的语言环境也需要从en_US 更改为en_GB .否则,它将显示GBP1.12,其中应为£1.12(为简洁起见,不包括货币汇率)。
有没有办法根据运行时动态提供的货币代码来确定语言环境?
【问题讨论】:
标签: java locale currency currency-formatting