NumberFormat类----Java常用类库

NumberFormat、DecimalFormat类----Java常用类库

在我们java的编程学习中,如果想要对数字进行格式化输出,以更好的视觉格式输出数字,此时可以使用NumberFormat类、DecimalFormat类。

NumberFormat类

前言

NumberFormat类是一个抽象类,可以通过静态方法得到其实例化对象,主要为了数字的格式化输出。例如:1234567891这个数字,我们在阅读时,难免会阅读困难,此时使用此类就可以格式化输出为此格式:1,234,567,891。此时完成了数字的格式化输出,用户阅读较为方便。

主要方法
序号方法类型描述
1public static Locale[] getAvailableLocales()普通返回所有语言环境的数组
2public static final NumberFormat getInstance()普通返回当前默认语言环境的数字格式
3public static NumberFormat getInstance(Locale inLocale)普通返回指定环境的数字格式
4public static final NumberFormat getCurrencyInstance()普通返回当前默认环境的货币格式
5public static NumberFormat getCurrencyInstance(Locale inLocale)普通返回指定语言环境的数字格式
案例代码
package chapter_eleven;

import java.text.NumberFormat;

public class NumberFormatDemo01 {
    public static void main(String[] args) {
        NumberFormat nf1 = NumberFormat.getInstance();              //得到默认的数字格式显示
        System.out.println(nf1.format(1234567891));        //格式化数字并输出
        System.out.println(nf1.format(1523.69));        //格式化数字并输出
    }
}

运行结果
1,234,567,891
1,523.69

DecimalFormat类

前言

DecimalFormat也是Format的一个子类,此类支持按照用户自定义的格式输出格式化的数字,此类与SimpleDateFormat类类似,若要进行自定义格式化操作,则必须指定格式化操作的模板。

DecimalFormat的格式化模板
序号标记位置描述
10数字代表阿拉伯数字,每一个0代表一位阿拉伯数字,如果该位不存在则显示0
2#数字代表阿拉伯数字,每一个#表示一位阿拉伯数字,如果该位不存在则不显示
3.数字小数点分隔符或货币的小数分隔符
4-数字代表负号
5,数字分组分隔符
6E数字分隔科学计数法中的尾数和指数
7;子模式边界分隔正数和负数子模式
8%前缀或后缀数字乘以100并显示为百分数
9\u2030前缀或后缀乘以1000并显示为千分数
10\u00A4前缀或后缀货币记号,由货币号替换。如果两个同时出现,则用国际货币符号替换;如果出现在某个模式中,则使用货币小数分隔符,而不使用小数分隔符
11,前缀或后缀用于在前缀或后缀中为特殊字符加引号,例如"’#’#“将123格式化为”#123"。要创建单引号本身,则连续使用两个单引号,例如"#o’'clock"
案例代码
package chapter_eleven;

import java.text.DecimalFormat;

class FormatDemo{
    public void format1(String pattern, double value){
        DecimalFormat decimalFormat = new DecimalFormat(pattern);
        String str = decimalFormat.format(value);                           //格式化数字
        System.out.println("使用" + pattern + "格式化的数字-->" + str);       //输出格式化数字之后的结果
    }
}

public class NumberFormatDemo02 {
    public static void main(String[] args) {
        FormatDemo formatDemo = new FormatDemo();
        formatDemo.format1("###,###.###",111222.34567);
        formatDemo.format1("000,000.000",11222.34567);
        formatDemo.format1("###,###.###Y",111222.34567);
        formatDemo.format1("000,000.000Y",11222.34567);
        formatDemo.format1("###,##%",111222.34567);         //使用百分号形式
        formatDemo.format1("00.###%",0.0345678);
        formatDemo.format1("###.###\u2030",0.345678);       //使用千分号形式
    }
}

运行结果
使用###,###.###格式化的数字-->111,222.346
使用000,000.000格式化的数字-->011,222.346
使用###,###.###Y格式化的数字-->111,222.346Y
使用000,000.000Y格式化的数字-->011,222.346Y
使用###,##%格式化的数字-->11,12,22,35%
使用00.###%格式化的数字-->03.457%
使用###.###‰格式化的数字-->345.678

总结

NumberFormat类可以根据不同区域自动的格式化数字,而DecimalFormatecimalFormat用户可以自主选择数字的显示格式。

小知识

根据MessageFormat、DateFormat、NumberFormat的三个Format类就可以根据不同的区域进行格式化显示信息啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gaolw1102

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值