22-Format的子类--java.text.NumberFormat及其子类java.text.DecimalFormat

一、java.text.NumberFormat

1、public abstract class NumberFormat extends Format

2、如果格式化多个数值,较为高效的做法是:获取该格式并多次使用它。这样系统就不必多次获取关于语言环境语言和国家/地区约定的信息了

        long[] longNum = {20, 99};
        NumberFormat numberFormat = NumberFormat.getInstance();
        for (int i = 0; i < longNum.length; ++i) {
            System.out.println(numberFormat.format(longNum[i]) + "; ");
        }

3、常用方法

        double myNumber = 23323.3325632323;
        double test = 0.3464;

        //getInstance():返回当前默认语言环境的通用数值格式(四舍五入,最多保留3位小数,也可以是整数)
        String myString = NumberFormat.getInstance().format(myNumber);
        System.out.println(myString);   //23,323.333

        //getCurrencyInstance():返回当前默认语言环境的货币格式(四舍五入,必须全都保留2位小数)
        myString = NumberFormat.getCurrencyInstance().format(myNumber);
        System.out.println(myString);   //¥23,323.33

        //getNumberInstance():返回当前默认语言环境的通用数值格式(四舍五入,最多保留3位小数,也可以是整数)
        myString = NumberFormat.getNumberInstance().format(myNumber);
        System.out.println(myString);   //23,323.333

        //getPercentInstance():返回当前缺省语言环境的百分比格式(四舍五入,百分数必须是整数)
        myString = NumberFormat.getPercentInstance().format(test);
        System.out.println(myString);   //35%

        //返回当前默认语言环境的通用数值格式
        NumberFormat format = NumberFormat.getInstance();

        //setMaximumFractionDigits(int):设置数值的小数部分允许的最大位数。
        format.setMaximumFractionDigits(5);
        //setMinimumFractionDigits(int):设置数值的小数部分允许的最小位数。
        format.setMinimumFractionDigits(3);
        //setMaximumIntegerDigits(int):设置数值的整数部分允许的最大位数。
        format.setMaximumIntegerDigits(10);
        //setMinimumIntegerDigits(int):设置数值的整数部分允许的最小位数.
        format.setMinimumIntegerDigits(1);

        System.out.println(format.format(0.2321232));   //0.23212
        System.out.println(format.format(0.22));        //0.220

二、java.text.DecimalFormat

1、DecimalFormat是NumberFormat的子类,用于格式化十进制数字

2、pattern中某些字符的含义:

        String pattern = "xxx";
        DecimalFormat df = new DecimalFormat(pattern);

(1)0:一位数字,这一位缺失显示为0,即用来补零

(2)#:一位数字,这一位缺失就不显示

(3). :小数点

(4), :千位分隔符(分组分隔符的占位符)

(5)- :缺省负数前缀

(6)%:百分比,乘以100或作为百分比显示

3、常用方法

疑问:下面代码中,部分四舍五入是逢6进1,不是逢5进1,为什么???

        DecimalFormat df1 = new DecimalFormat("####.000");
        System.out.println(df1.format(12345.56));    //12345.560

        //##.00%:百分比格式,后面不足2位的用0补齐
        DecimalFormat df2 = new DecimalFormat("##.00%");
        System.out.println(df2.format(1.47658));    //147.66%

        DecimalFormat df3 = new DecimalFormat("###,###.00");
        System.out.println(df3.format(24.7));       //24.70
        System.out.println(df3.format(23123.479));   //23,123.48
        System.out.println(df3.format(0.00));   //.00

        DecimalFormat df4 = new DecimalFormat("#.00");
        System.out.println(df4.format(0.00));   //.00

        DecimalFormat df5 = new DecimalFormat("###,##0.00");
        System.out.println(df5.format(0.00));   //0.00

        DecimalFormat df6 = new DecimalFormat("#.##");
        System.out.println(df6.format(.00));     //0
        System.out.println(df6.format(0.00));    //0
        System.out.println(df6.format(.12));     //0.12
        System.out.println(df6.format(0.12));    //0.12

        DecimalFormat df7 = new DecimalFormat(".##");
        System.out.println(df7.format(.00));    //.0
        System.out.println(df7.format(0.00));    //.0
        System.out.println(df7.format(.12));    //.12
        System.out.println(df7.format(0.12));    //.12

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值