Java DecimalFormat 用法

25 篇文章 0 订阅

在项目中遇到需要维护层级关系的数据,在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和#都没有匹配位数,而是有多少写多少

  • 3
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值