Java中的DecimalFormat用法解析

 更新时间:2023年10月24日 11:07:28   作者:假装你是大灰狼  
这篇文章主要介绍了Java中的DecimalFormat用法解析,DecimalFormat是Java中用于格式化数字的类,它提供了一种简单而灵活的方式来格式化数字,包括指定小数位数、千位分隔符、货币符号等,需要的朋友可以参考下

DecimalFormat用法

在项目中遇到需要维护层级关系的数据,在parentid里遇到这样一个需求,需要在一个数的前面加0,使这个字符串保持固定的长度,这样就遇到了这个类——DecimalFormat,继承自NumberFormat。 在这里记录一下它常用到的一些方法和使用方法:

double pi = 13.1415926;
System.out.println(new DecimalFormat("整数部分是#").format(pi));//13
System.out.println(new DecimalFormat("0.0").format(pi));//13.1
System.out.println(new DecimalFormat("000.000").format(pi));//013.142
//以百分比方式计数,并取两位小数
System.out.println(new DecimalFormat("#.##%").format(pi));//1314.16%
System.out.println(DecimalFormat.getCurrencyInstance().format(pi));//¥13.14
long c=299792458;//光速
//每三位以逗号进行分隔
System.out.println(new DecimalFormat(",###").format(c));//299,792,458

在使用的时候我还发现有#和0两种占位符,于是我又查了一下它们的区别

System.out.println(new java.text.DecimalFormat("#.###").format(3.0));  //3
System.out.println(new java.text.DecimalFormat("0.000").format(3.0) ); //3..000
DecimalFormat df1,df2;

System.out.println("整数部分0/#的区别");

df1 = new DecimalFormat("#.00");
df2 = new DecimalFormat("0.00");

System.out.println(df1.format(0.1)); // .10
System.out.println(df2.format(0.1)); // 0.10  

System.out.println("小数部分0/#的区别");

df1 = new DecimalFormat("0.00");
df2 = new DecimalFormat("0.##");

System.out.println(df1.format(0.1)); // 0.10
System.out.println(df2.format(0.1)); // 0.1

System.out.println(df1.format(0.006)); // 0.01
System.out.println(df2.format(0.006)); // 0.01

System.out.println("3、整数部分有多位");

df1 = new DecimalFormat("0.00");
df2 = new DecimalFormat("#.00");

System.out.println(df1.format(2)); // 2.00
System.out.println(df2.format(2)); // 2.00

System.out.println(df1.format(20)); // 20.00
System.out.println(df2.format(20)); // 20.00

System.out.println(df1.format(200)); // 200.00
System.out.println(df2.format(200)); // 200.00

结论:

1、小数部分 #代表最多有几位,0代表必须有且只能有几位 .00 表示最终结果得有两位小数,没有,我给你加上;多了,就四舍五入第三个小数 .## 标示最终结果最多有两位小数 一位或者没有都可以 多了同样四舍五入第三位

2、整数部分 0 和 # 当整数部分为0时 比如 0.1 # 此时认为整数部分不存在,所以不写 0 认为没有至少也得一位,写上0 这跟上面第一部分的表现是一致的:# 有就写,没有就不写 ;0 必须有 没有补0

3、整数部分有多位时: 2 20 200 由上面的结果可以看出 0和#对整数部分多位时的处理是一致的 就是有几位写多少位 这跟上面两部分的表现是不一致的 在有多位时,0和#都没有匹配位数,而是有多少写多少

到此这篇关于Java中的DecimalFormat用法解析的文章就介绍到这了,更多相关DecimalFormat用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 通过Java实现对PDF页面的详细设置

    通过Java实现对PDF页面的详细设置

    这篇文章主要介绍了通过Java实现对PDF页面的详细设置,下面的示例将介绍通过Java编程来对PDF页面进行个性化设置的方法,包括设置页面大小、页边距、纸张方向、页面旋转等,需要的朋友可以参考下
    2019-07-07
  • 一文深入了解Java中的AtomicInteger类

    一文深入了解Java中的AtomicInteger类

    AtomicInteger是java并发包下面提供的原子类,主要操作的是int类型的整型,通过调用底层Unsafe的CAS等方法实现原子操作,这篇文章主要给大家介绍了关于如何通过一文深入了解Java中AtomicInteger类的相关资料,需要的朋友可以参考下
    2024-02-02
  • Springboot详解底层启动过程

    Springboot详解底层启动过程

    这篇文章主要介绍了SpringBoot启动过程的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • JAVA线程用法详解

    JAVA线程用法详解

    这篇文章主要介绍了JAVA线程用法,配合实例针对Java中线程的开启、sleep、合并与让出等进行了较为深入的分析,需要的朋友可以参考下
    2014-08-08
  • Spring源码之循环依赖之三级缓存详解

    Spring源码之循环依赖之三级缓存详解

    这篇文章主要为大家详细介绍了Spring源码之循环依赖之三级缓存,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • SpringBoot + thymeleaf 实现读取视频列表并播放视频功能

    SpringBoot + thymeleaf 实现读取视频列表并播放视频功能

    这篇文章主要介绍了SpringBoot + thymeleaf 实现读取视频列表并播放视频功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • Java躲不过设计模式的坑之代理模式详解

    Java躲不过设计模式的坑之代理模式详解

    设计模式看来更像是一种设计思维或设计思想,为你的项目工程提供方向,让你的项目工程更加健壮、灵活,延续生命力。本文即将分享的是设计模式的其中一种:代理模式,感兴趣的可以了解一下
    2022-09-09
  • 浅谈@Aspect@Order各个通知的执行顺序

    浅谈@Aspect@Order各个通知的执行顺序

    这篇文章主要介绍了@Aspect@Order各个通知的执行顺序,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java集合基础知识 List/Set/Map详解

    Java集合基础知识 List/Set/Map详解

    这篇文章主要介绍了Java集合基础知识 List/Set/Map,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Java String类简单用法实战示例【字符串输出、比较】

    Java String类简单用法实战示例【字符串输出、比较】

    这篇文章主要介绍了Java String类简单用法,结合具体实例形式分析了Java使用String类实现字符串的输出和比较功能相关操作技巧,需要的朋友可以参考下
    2019-07-07

最新评论