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

usr*_*ΛΩΝ 42 java formatting numbers currency

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

负数正确显示带有前导-,但显然不会显示正数+.

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

JB *_*zet 61

使用负子模式,如DecimalFormatjavadoc中所述.

DecimalFormat fmt = new DecimalFormat("+#,##0.00;-#");
System.out.println(fmt.format(98787654.897));
System.out.println(fmt.format(-98787654.897));
Run Code Online (Sandbox Code Playgroud)

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

+98 787 654,90
-98 787 654,90
Run Code Online (Sandbox Code Playgroud)

  • 此外,对于 Kotlin 用户,我们可以执行类似 `valpattern="%+.2f"; 的操作。值编号=1.232432432f;println(pattern.format(a));` 输出 `+1.23` (4认同)

Tom*_*icz 14

Formatter的 API 提供了一个示例:

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


小智 7

我做了:

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

Integer newBalance = (Integer) binds.get("newBalance");
bindsForUpdate.put("plusMinus", plusMinusNF.format(newBalance));
Run Code Online (Sandbox Code Playgroud)

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