码迷,mamicode.com
首页 > 编程语言 > 详细

重学Java(2):Java数字的处理

时间:2016-04-11 12:02:30      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

一、简单的例子

1     public void testNum(){
2         System.out.println(Math.round(12.5));
3         System.out.println(Math.round(-12.5));
4     }
5 
6     Output: 13
7             -12
    输出是由 Math.round 的四舍五入规则影响的。

二、Java中的舍入法

1.ROUND_UP:远离零方向舍入。向绝对值最大的方向舍入,只要舍弃位非0即进位。

2.ROUND_DOWN:趋向零方向舍入。向绝对值最小的方向输入,所有的位都要舍弃,不存在进位情况。

3.ROUND_CEILING:向正无穷方向舍入。向正最大方向靠拢。若是正数,舍入行为类似于 ROUND_UP,若为负数,舍入行为
类似于 ROUND_DOWN。 Math.round() 方法就是使用的此模式。

4.ROUND_FLOOR:向负无穷方向舍入。向负无穷方向靠拢。若是正数,舍入行为类似于 ROUND_DOWN;若为负数,舍入行为
类似于 ROUND_UP。

5.HALF_UP:最近数字舍入(5进)。这是我们最经典的四舍五入。

6.HALF_DOWN:最近数字舍入(5舍)。在这里5是要舍弃的。

7.HAIL_EVEN:银行家舍入法。舍去位的数值小于5时直接舍去,大于5时进位后舍去,等于5时若后面还有其他非0值则进位
后舍去,若5后面是0则根据5前面数字的奇偶性判断,奇数进位,偶数舍去。

银行家算法举例:
1 public static void main(String[] args) {
2                 BigDecimal d = new BigDecimal(100000);      //存款
3                 BigDecimal r = new BigDecimal(0.001865*3);   //利息
4                 BigDecimal i = d.multiply(r).setScale(2,RoundingMode.HALF_EVEN);     //使用银行家算法
5 
6                 System.out.println("季利息是:"+i);
7                 }
8         Output:
9         季利息是:559.50

     

三、设置精度

1.使用BigDecimal
1 public void testNumberScale(){
2             double d = 123456.7850;
3             BigDecimal bigDecimal = new BigDecimal(d);
4             double d1 = bigDecimal.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
5             System.out.println(d1);
6         }

这里使用BigDecimal 使用 setScale 设置精度,使用 ROUND_HALF_UP 设置舍入规则。

2.使用 DecimalFormat

1 public void testNumberScale2(){
2             double d = 123456.7850;
3             DecimalFormat decimalFormat = new DecimalFormat("##.00");
4             String d1 = decimalFormat.format(d);
5             System.out.println(d1);
6         }

3.使用 String.format

1 public void testNumberScale3(){
2             double d = 123456.7850;
3             String d1 = String.format("%.2f",d);
4             System.out.println(d1);
5         }


注意 DecimalFormat 的舍入规则与 3 不同

重学Java(2):Java数字的处理

标签:

原文地址:http://www.cnblogs.com/zhangyn/p/5377482.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!