【问题标题】:Format a number with leading sign格式化带前导符号的数字
【发布时间】:2011-03-09 08:54:39
【问题描述】:

如何在 Java 中格式化带有前导符号的数字?

前导-可以正确显示负数,但+显然不会显示正数。

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

【问题讨论】:

    标签: java formatting numbers currency


    【解决方案1】:

    使用否定子模式,如 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
    

    【讨论】:

    • 另外,对于 Kotlin 用户,我们可以做这样的事情 val pattern ="%+.2f"; val num =1.232432432f ; println(pattern.format(a)); 输出 +1.23
    【解决方案2】:

    Formatter 的 API 提供了一个示例:

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

    【讨论】:

      【解决方案3】:

      我做到了:

      private NumberFormat plusMinusNF = new DecimalFormat("+#;-#");
      
      Integer newBalance = (Integer) binds.get("newBalance");
      bindsForUpdate.put("plusMinus", plusMinusNF.format(newBalance));
      

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

      【讨论】:

        【解决方案4】:

        它需要稍微调整一下 十进制格式返回 NumberFormat.getCurrencyInstance() 到 以独立于语言环境的方式进行。 这是我所做的(在 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)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-04-30
          • 1970-01-01
          • 1970-01-01
          • 2011-05-02
          • 1970-01-01
          • 2011-11-16
          • 1970-01-01
          相关资源
          最近更新 更多