【问题标题】:DecimalFormat negative pattern oddity?DecimalFormat 负模式奇怪?
【发布时间】:2014-08-12 23:10:52
【问题描述】:

我在 Google 或 SO 中找不到答案,这让我很烦。

阅读the javadocs,我发现“如果有明确的否定子模式,它仅用于指定否定前缀和后缀;位数、最小位数和其他特征都与肯定模式相同。这意味着 "#,##0.0#;(#)" 产生与 "#,##0.0#;(#,##0.0#)" 完全相同的行为。但是,此代码似乎没有遵循:

import java.text.DecimalFormat;

public class NumberFormatTest {
    public static void main(String args[]) {
        DecimalFormat df = new DecimalFormat("#,###;(#,###)");
        System.out.println(df.format(-1234.0));

        df.applyPattern("#,###;(#)");
        System.out.println(df.format(-1234.0));
    }
}

给出一个输出

(1,234)
(1,234

(注意第 2 行中缺少的括号)

我错过了什么?

【问题讨论】:

    标签: java decimalformat


    【解决方案1】:

    十进制格式中的错误。请参阅错误报告http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6609740

    【讨论】:

      【解决方案2】:

      尝试一下

          DecimalFormat df=new DecimalFormat("#,##0.0");
          System.out.println(df.format(-12999.0));// the output is: -12 999,0
      

      这是有效的

      【讨论】:

      • 确实如此,但它没有回答问题。
      猜你喜欢
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      相关资源
      最近更新 更多