数据精确计算和格式规范

format的参数为数值类型或者BigDecimal对象。

保留一位小数参数用0.0,保留两位用0.00。

可以用“,”和占位符来格式化输出的字符串,隔开,如参数为0,000.00表示保留2位小数,整数部分三位一逗

eg: 
    1:new DecimalFormat("00.000").format(pi) //结果:03.142
    2:new DecimalFormat("##.###").format(pi) //结果:3.142
都是对pi进行格式化,但第一个的结果是03.142,第二个的结果是3.142
这是什么原因呢?
0和#都是占位符,但在不同的地方,作用不一样。下面对他们做了具体的比较。
希望对大家有所帮助。
0: 
    比实际数字的位数多,不足的地方用0补上。
    new DecimalFormat("00.00").format(3.14)  //结果:03.14
    new DecimalFormat("0.000").format(3.14)  //结果: 3.140
    new DecimalFormat("00.000").format(3.14)  //结果:03.140
    比实际数字的位数少:整数部分不改动,小数部分,四舍五入
    new DecimalFormat("0.000").format(13.146)  //结果:13.146
    new DecimalFormat("00.00").format(13.146)  //结果:13.15
    new DecimalFormat("0.00").format(13.146)  //结果:13.15
#: 
    比实际数字的位数多,不变。
    new DecimalFormat("##.##").format(3.14)  //结果:3.14
    new DecimalFormat("#.###").format(3.14)  //结果: 3.14
    new DecimalFormat("##.###").format(3.14)  //结果:3.14
    比实际数字的位数少:整数部分不改动,小数部分,四舍五入
    new DecimalFormat("#.###").format(13.146)  //结果:13.146
    new DecimalFormat("##.##").format(13.146)  //结果:13.15
    new DecimalFormat("#.##").format(13.146)  //结果:13.15
其他的一些用法,(添加百分号,千分号,科学计数法,自定义正负数模板)
可参照
http://jff.iteye.com/blog/576737
http://blog.csdn.net/marcoleung/article/details/176514

保留小数:java.text.NumberFormat format 方法的使用

获取实例:getInstance()返回当前默认语言环境的通用数值格式

         getCurrencyInstance()返回当前默认语言环境的货币格式

         getNumberInstance()返回当前默认语言环境的通用数值格式

         getPercentInstance()返回当前默认语言环境的百分比格式

设置小数的位数条件:

setMaximumFractionDigits(int newValue)设置数的小数部分所允许的最大位数

setMaximumIntegerDigits(int newValue) 设置数的整数部分所允许的最大位数

setMinimumFractionDigits(int newValue) 设置数的小数部分所允许的最小位数

setMinimumIntegerDigits(int newValue) 设置数的整数部分所允许的最小位数

使用format方法默认显示整数部分三位一逗,小数按照设置的条件来舍入,个人感觉用他的子类DecimalFormat更好用

保留小数:java.math.BigDecimal 

  一般来说,可以使用 BigDecimal 的构造方法或者静态方法的 valueOf() 方法把基本类型的变量构建成 BigDecimal 对象
1 BigDecimal b1 = new BigDecimal(Double.toString(0.48));
2 BigDecimal b2 = BigDecimal.valueOf(0.48);

 对于常用的加,减,乘,除,BigDecimal类提供了相应的成员方法。

1 public BigDecimal add(BigDecimal value);                        //加法
2 public BigDecimal subtract(BigDecimal value);                   //减法 
3 public BigDecimal multiply(BigDecimal value);                   //乘法
4 public BigDecimal divide(BigDecimal value);                     //除法


 进行相应的计算后,我们可能需要将BigDecimal对象转换成相应的基本数据类型的变量,可以使用floatValue()doubleValue()等方法

可以根据设定来选择舍入的方式,如四舍五入: ROUND_HALF_UP其他的(ROUND_UP舍入远离零的舍入模式ROUND_DOWN接近零的舍入模式
double   f   =   111231.5585; 
BigDecimal   b   =   new   BigDecimal(f); 
double   f1   =   b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值