DecimalFormat格式化数字
DecimalFormat类也是Format的一个子类,主要作用是格式化数字。当然,在格式化数字时要比直接使用NumberFormat更加 方便,因为可以直接指定按用户自定义的方式进行格式化操作,与SimpleDateFormat类似,如果要进行自定义格式化操作,则必须指定格式化操作 的模板,此模板如表11-13所示。
表11-13 DecimalFormat格式化模板
序号 |
标 记 |
位 置 |
描 述 |
1 |
0 |
数字 |
代表阿拉伯数字,每一个0表示一位阿拉伯数字, 如果该位不存在则显示0 |
2 |
# |
数字 |
代表阿拉伯数字,每一个#表示一位阿拉伯数字, 如果该位不存在则不显示 |
3 |
. |
数字 |
小数点分隔符或货币的小数分隔符 |
4 |
- |
数字 |
代表负号 |
5 |
, |
数字 |
分组分隔符 |
6 |
E |
数字 |
分隔科学计数法中的尾数和指数 |
7 |
; |
子模式边界 |
分隔正数和负数子模式 |
8 |
% |
前缀或后缀 |
数字乘以100并显示为百分数 |
9 |
\u2030 |
前缀或后缀 |
乘以1000并显示为千分数 |
10 |
¤ \u00A4 |
前缀或后缀 |
货币记号,由货币号替换。如果两个同时出现, 则用国际货币符号替换;如果出现在某个模式中 ,则使用货币小数分隔符,而不使用小数分隔符 |
11 |
, |
前缀或后缀 |
用于在前缀或后缀中为特殊字符加引号,例如 "'#'#" 将 123 格式化为 "#123"。要创建单引 号本身,则连续使用两个单引号,例如"# o''clock" |
示例:
1 DecimalFormat format1=new DecimalFormat("000.00"); 2 System.out.println("Test.main()"+format1.format(12.345));//012.34 小数点前和后缺数补零,小数点后多数截取,6上进一 3 4 DecimalFormat format2=new DecimalFormat("##.##"); 5 System.out.println("Test.main()"+format2.format(3.456));//3.46 小数点前和后缺数不补0,小数点后多数截取,6上进一 6 7 DecimalFormat format3=new DecimalFormat("000,000,000.000" ); 8 System.out.println("Test.main()"+format3.format(43215696.4562286));//043,215,696.456 数字前的分隔符 9 10 DecimalFormat format4=new DecimalFormat("#.##%"); 11 System.out.println("Test.main()"+format4.format(4.5));//450% 12 13 DecimalFormat format5=new DecimalFormat("#.##\u2030"); 14 System.out.println("Test.main()"+format5.format(0.0002));//千分号0.2‰ 15 16 DecimalFormat format6=new DecimalFormat("'这是我的钱$'##.##");//数字前后修饰符(修饰文字用''隔开) 这是我的钱$123.2 17 System.out.println("Test.main()"+format6.format(123.2)); 18