210825-实战小技巧12:数字格式化

文章目录
  1. 1. DecimalFormat使用说明
  • II. 其他
    1. 1. 一灰灰Blog: https://liuyueyi.github.io/hexblog
    2. 2. 声明
    3. 3. 扫描关注
  • 每天一个实战小技巧,数字格式化

    数字的格式化场景,更多的是在日志输出、金额计算相关的领域中会用到,平常我们可能更多使用String.format来格式化,但是请注意,数字格式化是有一个DecimalFormat,专门来针对数字进行格式化

    今天我们的知识点就是DecimalFormat来实现数字格式化

    1. DecimalFormat使用说明

    对于DecimalFormat的使用比较简单,主要是借助两个占位0#,区别在于当格式化的占位数,多余实际数的时候,占位0的场景下,会用前缀0来补齐;而#则不需要补齐

    上面这个可能不太好理解,举例说明如下

    1
    2
    3
    double num = 3.1415926;
    System.out.println(new DecimalFormat("000", num));
    System.out.println(new DecimalFormat("###", num));

    上面两个都是只输出整数,但是输出结果不同,如下

    1
    2
    003
    3

    简单来说,就是0,主要用于定长的输出,对于不足的,前缀补0

    整数#小数

    除了上面的基本姿势之外,更常见的是设置整数、小数的位数

    1
    2
    System.out.println(new DecimalFormat("000.00", num));
    System.out.println(new DecimalFormat("###.##", num));

    输出结果如下

    1
    2
    003.14
    3.14

    百分比

    百分比的输出也属于常见的case,使用DecimalFormat就很简单

    1
    2
    System.out.println(new DecimalFormat("000.00%", num));
    System.out.println(new DecimalFormat("###.##%", num));

    输出如下

    1
    2
    3
    314.16%
    314.16%
    `

    科学计数

    非专业场景下,科学技术的可能性比较小

    1
    2
    System.out.println(new DecimalFormat("000.00E0", num));
    System.out.println(new DecimalFormat("###.##E0", num));

    输出结果如下

    1
    2
    314.16E-2
    3.1416E0

    金钱样式输出

    金融相关的钱输出时,非常有意思的是每三位加一个逗号分隔,如果想实现这个效果,也可以很简单完成

    1
    2
    double num = 31415926
    System.out.println(new DecimalFormat(",###", num));

    输出结果如下

    1
    31,415,926

    嵌入模板输出

    格式化模板,除了基础的000, ###之外,还可以直接放在一个字符串中,实现类似String.format的效果

    比如显示余额

    1
    2
    double num = 31415926
    System.out.println(new DecimalFormat("您的余额,###¥", num));

    输出结果如下

    1
    您的余额31,415,926¥

    系列博文:

    II. 其他

    1. 一灰灰Bloghttps://liuyueyi.github.io/hexblog

    一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

    2. 声明

    尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

    3. 扫描关注

    一灰灰blog

    QrCode

    评论

    Your browser is out-of-date!

    Update your browser to view this website correctly. Update my browser now

    ×