如何在Java中使用其前导符号格式化数字?
正数-
正确显示负数,但+
显示正数不会显示。
如何用Java做到这一点?我当前的货币格式字符串是\#\#\#,\#\#\#,\#\#\#,\#\#\#,\#\#0.00
(是的,我需要格式化正/负货币值)
答案 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()可能不会 为所有语言环境返回一个值 系统,但它应该工作 主要的(我认为它有一个 合理的后退,所以你 不应该做任何事情)
来源:Format negative amount of USD with a minus sign, not brackets (Java)