DecimalFormat

本文详细介绍了Java中的DecimalFormat类,它是NumberFormat的一个子类,用于格式化十进制数字。文章展示了如何使用DecimalFormat来实现数字的基本格式化操作,如设置小数位数、整数位数、分组大小等,并介绍了通过特定字符进行复杂格式化的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DecimalFormat

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。能够做到日常所需的大部分功能。

基本功能

DecimalFormat里面封装了一些对数据最基本的操作。包括对数据三位一组的间隔分组,小数位保留多少位,整数位最多现实多少位能。

DecimalFormat df = (DecimalFormat) DecimalFormat.getInstance();

        double d = 123456.5555;
        // 默认保留三位小数,并在整数位的时候三位添加一个间隔符
        System.out.println(df.format(d));

        // 最大的小数位数,四舍五入
        df.setMaximumFractionDigits(2);

        // 最小的小数位数,不够的添0
        df.setMinimumFractionDigits(2);
        System.out.println(df.format(d));

        // 最小的整数位数,位数不够补0
        df.setMinimumIntegerDigits(15);

        System.out.println(df.format(d));

        // 最大的整数位数,多余的舍去
        df.setMaximumIntegerDigits(1);

        System.out.println(df.format(d));

        df = (DecimalFormat) DecimalFormat.getInstance();

        // 设置整数位每四个一个分组
        df.setGroupingSize(4);

        System.out.println(df.format(d));

        DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance();

        // 设置小数点的分隔符
        dfs.setDecimalSeparator('s');
        // 设置每一分组的分隔符
        dfs.setGroupingSeparator('a');

        df.setDecimalFormatSymbols(dfs);

        System.out.println(df.format(d));

        // 取消分组
        df.setGroupingUsed(false);
        System.out.println(df.format(d));

结果

123,456.556
123,456.56
000,000,000,123,456.56
6.56
12,3456.556
12a3456s556
123456s556
扩展功能

该DecimalFormat 中可以通过#,0,%字符对数字进行特殊的格式化。
- #表示字符安装#位数进行匹配,如果在最后或者整数的最前有0会被舍去。
- 0表示强制匹配,如果位数不够,则会强制补0;
- % 表示将数据转化成百分比数据

        double a = 1.220;
        double b = 11.22;
        double c = 0.22;

        DecimalFormat df = (DecimalFormat) DecimalFormat.getInstance();


        df.applyPattern("00.00%");
        System.out.println(df.format(a));
        System.out.println(df.format(b));
        System.out.println(df.format(c));

        df.applyPattern("##.##%");
        System.out.println(df.format(a));
        System.out.println(df.format(b));
        System.out.println(df.format(c));
122.00%
1122.00%
22.00%
122%
1122%
22%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值