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:关于这个神奇的现象,目前还不知道原因,若有大佬知晓,留言评论!

  • 13
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值