十进制格式的#。##和##。##模式有什么区别?

时间:2014-04-24 08:48:42

标签: java decimalformat

在我的程序中,我使用DecimalFormat中的#。## 模式,如下所示:

DecimalFormat df = new DecimalFormat("#.##"); 

我错误地添加了额外的#,如下所示:

DecimalFormat df = new DecimalFormat("##.##");

但这不会影响我的输出。我尝试过使用不同的输入组合。输出没有区别。尝试谷歌搜索,但没有正确的解释。

那么使用“#。##”和“##。##”的确切区别是什么?

如果两者相同,为什么Java中允许这样做?

如果两者不同,为什么两种情况下的输出都相同?

修改

示例程序:

import java.text.DecimalFormat;

public class Decimals {

    public static void main(String[] args) {

        double d1[] = new double[] {100d, -1d, -0.111111d, 2.555666d, 55555555555d, 0d};

        DecimalFormat df1 = new DecimalFormat("#.##");
        DecimalFormat df2 = new DecimalFormat("##.##");

        for (double d : d1) {
            System.out.println(df1.format(d));
            System.out.println(df2.format(d));
        }
    }

}

输出:

100
100
-1
-1
-0.11
-0.11
2.56
2.56
55555555555
55555555555
0
0

2 个答案:

答案 0 :(得分:2)

恕我直言,DecimalFormat用于格式化数字的整个 represntation 并控制数字后的数字 count

所以###在十进制(.)之前不会表现得不同......但如果放在十进制(.)之后肯定会这样做/ p>

假设12.234为输入数字:

12.234和12.23会有意义 但
12.234和2.234不会。

因此,重点放在小数点之后的格式和值上,如:

  • setMinimumFractionDigits(0);

  • setMaximumFractionDigits(2);

  • setRoundingMode

答案 1 :(得分:1)

根据DecimalFormat JavaDoc。 "#,十进制,零显示为缺席"。

所以额外的#将显示另一个数字,除非它是0.因此这两种格式给出了相同的结果。

编辑:实际上他们都什么都不做,因为它们等同于默认格式。