在我的程序中,我使用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
答案 0 :(得分:2)
恕我直言,DecimalFormat
用于格式化数字的整个 represntation 并控制数字后的数字 count 。
所以#
和##
在十进制(.
)之前不会表现得不同......但如果放在十进制(.
)之后肯定会这样做/ p>
假设12.234为输入数字:
12.234和12.23会有意义 但因此,重点放在小数点之后的格式和值上,如:
setMinimumFractionDigits(0);
setMaximumFractionDigits(2);
setRoundingMode
答案 1 :(得分:1)
根据DecimalFormat JavaDoc。 "#,十进制,零显示为缺席"。
所以额外的#将显示另一个数字,除非它是0.因此这两种格式给出了相同的结果。
编辑:实际上他们都什么都不做,因为它们等同于默认格式。