我正在尽我所能找到一种方法来使用 Java 跨各种区域设置外币的格式,这些区域设置不是该货币的默认设置。我找到了 java.util.Currency,它可以表示用于各种语言环境的正确符号。也就是说,对于美元,它在美国为我提供了符号 $,在其他国家为我提供了美元或美元。此外,我还找到了 java.text.NumberFormat,它将为特定区域设置货币格式。我的问题 - util.Currency 将提供适当的符号和代码来表示非默认语言环境中的货币,但不会以任何特定于语言环境的方式格式化货币。 NumberFormat 假定我传递给它的带有区域设置的数字是该 区域设置的货币, 而不是外币。
例如,如果我使用 getCurrencyInstance(Locale.GERMANY) 然后格式化 (1000),它假定我正在格式化 1000 欧元。实际上,我可能需要美元、日元或任何其他货币的正确的德语本地化表示(正确的小数点和千位分隔符,是将符号放在金额之前还是之后)。到目前为止,我所能得出的最好结果是使用 NumberFormat 格式化数字,然后在输出中搜索非数字字符,并将它们替换为从 util.Currency 派生的符号。然而,这是非常脆弱的,并且对于我的目的来说可能不够可靠。想法?任何帮助深表感谢。
原文由 JPittard 发布,翻译遵循 CC BY-SA 4.0 许可协议
尝试在 getCurrencyInstance(Locale.GERMANY) 返回的实例上使用 setCurrency
坏了:
输出:23,00 €
固定:
输出:23,00 美元