文章目录
NumberFormat、DecimalFormat类----Java常用类库
在我们java的编程学习中,如果想要对数字进行格式化输出,以更好的视觉格式输出数字,此时可以使用NumberFormat类、DecimalFormat类。
NumberFormat类
前言
NumberFormat类是一个抽象类,可以通过静态方法得到其实例化对象,主要为了数字的格式化输出。例如:1234567891这个数字,我们在阅读时,难免会阅读困难,此时使用此类就可以格式化输出为此格式:1,234,567,891。此时完成了数字的格式化输出,用户阅读较为方便。
主要方法
序号 | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public static Locale[] getAvailableLocales() | 普通 | 返回所有语言环境的数组 |
2 | public static final NumberFormat getInstance() | 普通 | 返回当前默认语言环境的数字格式 |
3 | public static NumberFormat getInstance(Locale inLocale) | 普通 | 返回指定环境的数字格式 |
4 | public static final NumberFormat getCurrencyInstance() | 普通 | 返回当前默认环境的货币格式 |
5 | public 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的格式化模板
序号 | 标记 | 位置 | 描述 |
---|---|---|---|
1 | 0 | 数字 | 代表阿拉伯数字,每一个0代表一位阿拉伯数字,如果该位不存在则显示0 |
2 | # | 数字 | 代表阿拉伯数字,每一个#表示一位阿拉伯数字,如果该位不存在则不显示 |
3 | . | 数字 | 小数点分隔符或货币的小数分隔符 |
4 | - | 数字 | 代表负号 |
5 | , | 数字 | 分组分隔符 |
6 | E | 数字 | 分隔科学计数法中的尾数和指数 |
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类就可以根据不同的区域进行格式化显示信息啦!