格式化带有前导符号的数字

时间:2011-03-09 08:54:40

标签: java formatting numbers currency

如何在Java中使用其前导符号格式化数字?

正数-正确显示负数,但+显示正数不会显示。

如何用Java做到这一点?我当前的货币格式字符串是\#\#\#,\#\#\#,\#\#\#,\#\#\#,\#\#0.00(是的,我需要格式化正/负货币值)

4 个答案:

答案 0 :(得分:58)

使用负子图案,如javadoc for DecimalFormat

中所述
DecimalFormat fmt = new DecimalFormat("+#,##0.00;-#");
System.out.println(fmt.format(98787654.897));
System.out.println(fmt.format(-98787654.897));

生成(在我的法语区域设置中,空格是分组分隔符,逗号是小数点分隔符):

+98 787 654,90
-98 787 654,90

答案 1 :(得分:13)

Formatter的API提供了一个示例:

Formatter formatter = new Formatter();
System.out.println(formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E));
//e =    +2,7183

答案 2 :(得分:7)

我做了:

private NumberFormat plusMinusNF = new DecimalFormat("+#;-#");

Integer newBalance = (Integer) binds.get("newBalance");
bindsForUpdate.put("plusMinus", plusMinusNF.format(newBalance));

格式化正整数,例如5到“+5”和负整数,例如-7到“-7”(如预期的那样)

答案 3 :(得分:2)

  

需要稍微调整一下   返回的DecimalFormat   NumberFormat.getCurrencyInstance()to   以与语言环境无关的方式进行。   这就是我所做的(在Android上测试):

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()可能不会   为所有语言环境返回一个值   系统,但它应该工作   主要的(我认为它有一个   合理的后退,所以你   不应该做任何事情)

ageektrapped

来源:Format negative amount of USD with a minus sign, not brackets (Java)

相关问题