DecimalFormat格式化

发布时间 2023-10-18 17:24:17作者: ASKANDANSWERS

对数字进行格式化,可以使用DecimalFormat对象

0:表示整数或小数部分时,实际数字整数超过模板位数不处理,不足则最左侧补0;小数部分超过模板位数截取,不足补0。
#:表示整数或小数部分时,实际数字整数位数超过或不够不做处理;小数位数超过模板位数截取,不足不补足。

 

0 阿拉伯数字
# 阿拉伯数字如果不存在就显示为空
. 小数分隔符或货币小数分隔符
- 减号
, 分组分隔符
E 分割科学技术法中的尾数和指数。在前缀和后缀中无需添加引号
% 乘以100并显示为百分数
\u2030 乘以1000并显示为千分数
\u00A4 货币记号,由货币符号替换。如果两个同时出现,则用国际货币符号替换。如果出现在某个模式中,则使用货币小数分隔符,而不使用小数分隔符
' 用于在前缀或或后缀中为特殊字符加引号,例如 "'#'#" 将 123 格式化为 "#123"。要创建单引号本身,请连续使用两个单引号:"# o''clock"
注意
1.整数:若是n个0,就从个位开始向高位填充,如果有值就是原来的值,没有就填充0。若都是#,没有实际意义,不管是几个#,最后的结果都是原来的整数。0和#配合使用,只能是"##00",不能是"00##",就是#在前0在后。实现是上面的合集。
2.小数:是可以保留小数点后几位的(几个0后或几个#)。若n个0,就是保留n位小数,小数不足的部分用0填充。 若n个#,就是保留n位小数,小数不足部分没有就是没有。

public class DecimalFormatTest {
    public static void main(String[] args) {
        double aa=1.123456789;//aa
        //一位整数
        System.out.println(new DecimalFormat("0").format(aa));//1
        //一个整数,两位小数
        System.out.println(new DecimalFormat("0.00").format(aa));//1.12
        //两个整数,三个小数,整数不足用0填充。
        System.out.println(new DecimalFormat("00.000").format(aa));//01.123
        //所有整数
        System.out.println(new DecimalFormat("#").format(aa));//1
        //百分比:两位小数
        System.out.println(new DecimalFormat("#.##%").format(aa));//112.35%
        long bb = 123456789l;
        //科学计数法:小数点后五位。
        System.out.println(new DecimalFormat("#.#####E0").format(bb));//1.23457E8
        //科学计数方法:两位整数,小数点后四位。
        System.out.println(new DecimalFormat("00.####E0").format(bb));//12.3457E7
        //用逗号隔开。
        System.out.println(new DecimalFormat(",###").format(bb));//123,456,789
        //在字符串中嵌入格式
        System.out.println(new DecimalFormat("显示的数据为###。").format(bb));
    }
}