DecimalFormat负模式奇怪?

时间:2014-08-12 23:10:53

标签: java decimalformat

我无法在Googles或SO中找到答案,这让我感到烦恼。

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

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行中缺少的paren)

我错过了什么?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:-2)

尝试一下

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

这是有效的