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 方法可以为我做到这一点。
你可以这样做:
NumberFormat.getCurrencyInstance(Locale.forLanguageTag("en-US-u-cf-account"));
https://www.jdoodle.com/ia/1yzp
Locale.forLanguageTag
的字符串参数是 IETF BCP 47 语言标签。返回一个 Locale
对象,我们又将调用传递给 NumberFormat.getCurrencyInstance
。
类似这样的:
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);