BigInteger、BigDecimal以及DecimalFormat

DecimalFormat

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。
DecimalFormat的使用

1.最基本的使用
1.1 0和#配合使用
double pi = 3.1415927;//圆周率
//取一位整数
System.out.println(new DecimalFormat("0").format(pi));//3
//取一位整数和两位小数
System.out.println(new DecimalFormat("0.00").format(pi));//3.14
//取两位整数和三位小数,整数不足部分以0填补。
System.out.println(new DecimalFormat("00.000").format(pi));// 03.142
//取所有整数部分
System.out.println(new DecimalFormat("#").format(pi));//3
//以百分比方式计数,并取两位小数
System.out.println(new DecimalFormat("#.##%").format(pi));//314.16%

 /**
  * 上面的代码就是网上很经典的案例,下面我们来分析另外的一个值
  */      
pi=12.34567;
//取一位整数
System.out.println(new DecimalFormat("0").format(pi));//12
//取一位整数和两位小数
System.out.println(new DecimalFormat("0.00").format(pi));//12.35
//取两位整数和三位小数,整数不足部分以0填补。
System.out.println(new DecimalFormat("00.000").format(pi));// 12.346
//取所有整数部分
System.out.println(new DecimalFormat("#").format(pi));//12
//以百分比方式计数,并取两位小数
System.out.println(new DecimalFormat("#.##%").format(pi));//1234.57%

/**
 * 扩展,如果是其他的数字会是下面的效果
 */
pi=12.34;
//整数
System.out.println(new DecimalFormat("6").format(pi));//612
System.out.println(new DecimalFormat("60").format(pi));//612
System.out.println(new DecimalFormat("06").format(pi));//126
System.out.println(new DecimalFormat("00600").format(pi));//00126
System.out.println(new DecimalFormat("#####60000").format(pi));//00126
//小数
System.out.println(new DecimalFormat(".6").format(pi));//12.6
System.out.println(new DecimalFormat(".06").format(pi));//12.36
System.out.println(new DecimalFormat(".60").format(pi));//12.36
System.out.println(new DecimalFormat(".0600").format(pi));//12.3406
System.out.println(new DecimalFormat(".6000").format(pi));//12.3406
System.out.println(new DecimalFormat(".600000##").format(pi));//12.340006

上面的例子基本满足我们想要的格式化的一些东西了。我们来对比分析一下上面两个值,很明显.就是我们常用的小数点分隔符,前面是整数,后面是小数。

1.整数:若是n个0,就从个位开始向高位填充,如果有值就是原来的值,没有就填充0。
        若都是#,没有实际意义,不管是几个#,最后的结果都是原来的整数。
        0和#配合使用,只能是"##00",不能是"00##",就是#在前0在后。实现是上面的合集。
2.小数:是可以保留小数点后几位的(几个0后或几个#)。
        若n个0,就是保留n位小数,小数不足的部分用0填充。
        若n个#,就是保留n位小数,小数不足部分没有就是没有。
        0和#配合使用,只能是".00##",不能是".##00",就是0在前#在后。实现和上面一样。
3.数字(1-9):上面的分析不是#就是0,如果是其他的数值会怎样呢? 上面的扩展很详细的说明这个问题。
        整数:若没有0或#,默认在后面拼接整数;若有0或#,找到第一个0或#的位置,然后找出所有的0或#拼在一起,按照上面的规则,在第一个0或#出现的位置插入响应的格式化以后的值。
        小数:若没有0或#,格式化是什么就显示什么;若有0或#,找出所有的0或#拼在一起,按照上面的规则,在小数点的后面插入响应的格式化以后的值。


BigInteger

处理浮点数的精度问题

BigDecimal

处理整数的数值大小问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值