使用减号(而不是方括号)格式化负美元金额 (Java)

2022-09-01 10:20:30

如何打印带减号的负美元货币值?NumberFormat.getCurrencyInstance()


答案 1

它需要对 返回的 DecimalFormat 进行一些调整,才能以与区域设置无关的方式执行此操作。以下是我所做的(在Android上进行了测试):NumberFormat.getCurrencyInstance()

DecimalFormat formatter = (DecimalFormat)NumberFormat.getCurrencyInstance();
String symbol = formatter.getCurrency().getSymbol();
formatter.setNegativePrefix(symbol+"-"); // or "-"+symbol if that's what you need
formatter.setNegativeSuffix("");

IIRC,可能不会为所有系统的所有语言环境返回一个值,但它应该适用于主要语言环境(我认为它本身有一个合理的回退,所以你不应该做任何事情)Currency.getSymbol()


答案 2

以下是我总是在java类中或通过fmt:formatNumber jstl标签使用的一个:

DecimalFormat format = new DecimalFormat("$#,##0.00;$-#,##0.00");
String formatted = format.format(15.5);

它始终产生至少0.00美元,并且在显示时是一致的。还包括数千个分离器(如果需要)。如果您的要求,您可以将减号移到美元符号的前面。