使用 NumberFormat 显示带括号的负货币

问题描述 投票:0回答:2
NumberFormat numberFormat = NumberFormat.getCurrencyInstance(Locale.US);
Number value = NumberFormat.getInstance().parse("-1234.876");
String output = numberFormat.format(value);

我有上面的代码。输出是

-$1,234.88
。我希望输出是
($1,234.88)
。有没有办法使用 NumberFormat、getCurrencyInstance 和 Locale 来做到这一点? (我只需要这个才能在美国使用美元。)

我看到“帐户”的货币格式样式应该给我括号,但我不清楚是否可以将其与区域设置一起使用。如果可以的话,我不明白如何做。我确实尝试在其他代码之前添加

Locale locale = new Locale("en", "US","account");
。 我知道我可以使用操作 String 来获得我想要的东西,但我希望有 Java 方法可以为我做到这一点。

java java-17 negative-number currency-formatting
2个回答
2
投票

你可以这样做:

NumberFormat.getCurrencyInstance(Locale.forLanguageTag("en-US-u-cf-account"));

https://www.jdoodle.com/ia/1yzp

传递给

Locale.forLanguageTag
的字符串参数是 IETF BCP 47 语言标签。返回一个
Locale
对象,我们又将调用传递给
NumberFormat.getCurrencyInstance


0
投票

类似这样的:

NumberFormat numberFormat = NumberFormat.getCurrencyInstance(Locale.US);

NumberFormat.getCurrencyInstance(Locale.US);

// Cast to DecimalFormat to customize the negative pattern
DecimalFormat decimalFormat = (DecimalFormat) numberFormat;
decimalFormat.setNegativePrefix("($");
decimalFormat.setNegativeSuffix(")");

Number value = NumberFormat.getInstance().parse("-1234.876");
String output = decimalFormat.format(value);

System.out.println(output);
© www.soinside.com 2019 - 2024. All rights reserved.