DecimalFormat中#.00和0.##的使用
·
#:表示该位没有数字时填空显示,有则直接显示;出现在小数位部分时,n个#只保留n位有效小数(比如1.00不保留,1.11则保留)
0: 表示该位没有数字时补零显示,有则直接显示;出现在小数位部分时,n个0表示保留n位小数
另外,还有一个神奇的特例现象,不过总体表现就是上述的几个特点:
- #.00:小数点左边的#表示在没有数字时或只有个位且个位为零的时候填位为空
- #.##:小数点左边的#表示在没有数字时填位为空
public static void main(String[] args) {
//0.00:第一个零表示个位在没有数字时补零,有则直接显示;小数位的0表示该位没有数字时补零显示,且.00表示保留两位小数;其它位均正常显示;
DecimalFormat df2 = new DecimalFormat("0.00");
// System.out.println(df2.format(.1));//0.10
// System.out.println(df2.format(0.1));//0.10
// System.out.println(df2.format(0.10));//0.10
// System.out.println(df2.format(0.100));//0.10
// System.out.println(df2.format(1.1));//1.10
// System.out.println(df2.format(1.10));//1.10
// System.out.println(df2.format(11.1));//11.10
// System.out.println(df2.format(1.));//1.00
// System.out.println(df2.format(11));//11.00
DecimalFormat df1 = new DecimalFormat("0.##");//0.##:0表示该位没有数字时补零显示,有则直接显示
// System.out.println(df1.format(.1));//0.1
// System.out.println(df1.format(0.1));//0.1
// System.out.println(df1.format(0.10));//0.1
// System.out.println(df1.format(0.100));//0.1
// System.out.println(df1.format(1.1));//1.1
// System.out.println(df1.format(1.10));//1.1
// System.out.println(df1.format(11.1));//11.1
// System.out.println(df1.format(1.));//1
// #.00:小数点左边的#表示在没有数字时或只有个位且个位为零的时候填位为空,其它情况均正常显示;
// 小数位的0表示该位没有数字则补零显示,有则直接显示;.00表示保留两位小数;
DecimalFormat df3 = new DecimalFormat("#.00");
// System.out.println(df3.format(.1));//.10
// System.out.println(df3.format(0.1));//.10
// System.out.println(df3.format(0.10));//.10
// System.out.println(df3.format(0.100));//.10
// System.out.println(df3.format(1.1));//1.10
// System.out.println(df3.format(1.10));//1.10
// System.out.println(df3.format(10.1));//10.10
// System.out.println(df3.format(100.1));//100.10
// System.out.println(df3.format(1.));//1.00
DecimalFormat df4 = new DecimalFormat("00.##");//00.##:0表示该位没有数字时补零显示,有则正常显示
// System.out.println(df4.format(0.));//00
// System.out.println(df4.format(0.00));//00
// System.out.println(df4.format(1.));//01
// 00.##:0表示该位没有数字时补零显示,有则正常显示;#表示该位没有数字时补空显示,有则直接显示;
// .##只保留有意义小数位数,也就是说,1.00不保留两位小数,而1.01则保留两位小数;
DecimalFormat df5 = new DecimalFormat("#.##");
System.out.println(df5.format(0.));//0
System.out.println(df5.format(00.));//0
System.out.println(df5.format(0.1));//0.1
System.out.println(df5.format(1.00));//1
System.out.println(df5.format(1.));//1
System.out.println(df5.format(1.1));//1.1
System.out.println(df5.format(1.01));//1.01
System.out.println(df5.format(10.01));//10.01
}
一般,可以使用0.00或0.##或#0.00等类似的模式满足需求,我这里仅保留两位小数,既可以有保留功能也可以避免位上空现象。
ps:关于这个神奇的现象,目前还不知道原因,若有大佬知晓,留言评论!
更多推荐
已为社区贡献3条内容
所有评论(0)