语言:java问题:我需要用java手动设置货币代码。假设“usd”和locale可以是“fr ca”或“en\u us”,具体取决于登录的用户。我找不到解决办法,我们可以做的数字格式,通过设置手动货币和显示符号与数字输出。请注意,货币代码将与区域设置不同,反之亦然。
例如,如果我的货币是美元,那么基于不同的语言环境,数字应该格式化,输出应该如下所示$1300000.00-英语1.300.000,00$-双份1 300 000,00美元-波图圭语1 300 000,00美元-法国-加拿大
在下面进行了尝试,但没有给出预期的输出:
Currency currencyInstance1 = Currency.getInstance("USD"); // This can change based on the user input on the UI.
NumberFormat numberFormat4 = NumberFormat.getCurrencyInstance(Locale.CANADA_FRENCH);
numberFormat4.setCurrency(currencyInstance1);
System.out.println(numberFormat4.format(amount4));
Actual output : 123 456,79 USD
**Expected output:**
For french canada: 1 300 000,00 $ US
For Portuguese : 1 300 000,00 US$
For Deutch : 1.300.000,00 $
Any help is appreciated.
2条答案
按热度按时间jc3wubiy1#
java不支持跨语言环境的跨货币。
yzxexxkh2#
由于java的存在,国家代码是一个重要的语言环境组件。日期、时间、数字和货币的text.format对象对此元素特别敏感。国家代码为区域设置的语言组件添加了精确性。例如,法国和加拿大都使用法语。然而,两国的确切用法和惯用表达方式各不相同。这些差异可以通过不同的区域设置指示符来捕捉,其中只有国家代码不同。例如,代码fr\u ca(讲法语的加拿大)不同于fr\u fr(讲法语的法国)。
因此,如果我们需要获取符号,那么我们将需要创建一个带有区域设置和货币的Map。传递货币以获取符号,然后使用replace添加符号。