使用西方数字的货币格式

发布于 2024-12-06 01:24:30 字数 301 浏览 0 评论 0原文

我需要能够显示货币金额,其中货币是用户首选区域设置的货币,但仅使用西方数字。例如,如果用户选择的货币区域设置为 ar_AE(阿拉伯联合酋长国),则金额应显示为

AED 1,234.56

或类似内容,并使用正确的货币名称和小数位数,但是使用西方数字。

目前,我正在使用 NumberFormat.getCurrencyInstance(locale) 它使用阿拉伯字形格式化文本。

我有什么选择?我正在寻找一个通用的解决方案,不需要我对任何给定的货币有具体的了解。

I need to be able to display currency amounts where the currency is of the user's preferred locale, but using only Western digits. For example, if the user's chosen locale for the currency is ar_AE (for the United Arab Emirates) then the amount should be displayed as

AED 1,234.56

or something similar, using the correct currency name and number of decimal places, but using Western digits.

At the moment, I'm using NumberFormat.getCurrencyInstance(locale) which formats the text using Arabic glyphs.

What options do I have? I'm looking for a general solution which won't require me to have specific knowledge of any given currency.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

橘虞初梦 2024-12-13 01:24:30

如果您想要一个根据英语区域设置进行数字格式化的货币格式化程序,但使用默认区域设置的货币,我会尝试这样的操作:

    NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.ENGLISH);
    nf.setCurrency(Currency.getInstance(Locale.getDefault()));

If you want a currency formatter with number formatting according to the English locale, but using the default locale's currency, I would try something like this:

    NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.ENGLISH);
    nf.setCurrency(Currency.getInstance(Locale.getDefault()));
会傲 2024-12-13 01:24:30

您可以像这样使用 DecimalFormat

System.out.println(new DecimalFormat( "AED #0.00" , new DecimalFormatSymbols( Locale.ENGLISH)).format( 1.23 ));

编辑:要使用货币区域设置,请尝试以下操作:

System.out.println(Currency.getInstance( Locale.GERMANY ).getCurrencyCode() + " " + 
    new DecimalFormat( "#0.00" , new DecimalFormatSymbols( Locale.GERMANY )).format( 1.23 ));

打印:EUR 1,23

You might use DecimalFormat like this:

System.out.println(new DecimalFormat( "AED #0.00" , new DecimalFormatSymbols( Locale.ENGLISH)).format( 1.23 ));

Edit: to use the locale for currency too, try this:

System.out.println(Currency.getInstance( Locale.GERMANY ).getCurrencyCode() + " " + 
    new DecimalFormat( "#0.00" , new DecimalFormatSymbols( Locale.GERMANY )).format( 1.23 ));

Prints: EUR 1,23

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文