java基础-BigDecimal类常用方法介绍

              java基础-BigDecimal类常用方法介绍

                                  作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

 

一.BigDecimal类概述

   我们知道浮点数的计算结果是未知的。原因是计算机二进制中,表示浮点数不精确造成的。这个时候你需要一个超级大型的浮点数据,并且提供高精度的浮点运算,也就是我们要说的BigDecimal。

  不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。toString() 方法提供 BigDecimal 的规范表示形式。

  BigDecimal 类使用户能完全控制舍入行为。如果未指定舍入模式,并且无法表示准确结果,则抛出一个异常;否则,通过向该操作提供适当的 MathContext 对象,可以对已选择的精度和舍入模式执行计算。在任何情况下,可以为舍入控制提供八种舍入模式。使用此类(例如,ROUND_HALF_UP)中的整数字段来表示舍入模式已过时;应改为使用 RoundingMode enum(例如,RoundingMode.HALF_UP)的枚举值。  

  

二.BigDecimal类实现加法,减法和乘法的案例展示

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:y1053419035@qq.com
 5 */
 6 
 7 package cn.org.yinzhengjie.demo;
 8 
 9 import java.math.BigDecimal;
10 
11 public class BigDecimalDemo {
12     public static void main(String[] args) {
13         function();
14     }
15     
16     public static void function() {
17         BigDecimal a = new BigDecimal("0.009");
18         BigDecimal b = new BigDecimal("0.001");
19         //计算a+b的和,调用add方法
20         BigDecimal sum = a.add(b);
21         System.out.println(sum);
22         
23         BigDecimal x = new BigDecimal("1.1");
24         BigDecimal y = new BigDecimal("0.28");
25         BigDecimal sub = x.subtract(y);
26         System.out.println(sub);
27         
28         BigDecimal m = new BigDecimal("3.14");
29         BigDecimal n = new BigDecimal("100");
30         BigDecimal mul = m.multiply(n);
31         System.out.println(mul);
32     }
33 }
34 
35 
36 
37 /*
38 以上代码执行结果如下:
39 0.010
40 0.82
41 314.00
42 */

 

三.BIgDecimal类实现除法

 

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:y1053419035@qq.com
 5 */
 6 
 7 package cn.org.yinzhengjie.demo;
 8 
 9 import java.math.BigDecimal;
10 
11 public class BigDecimalDemo {
12     public static void main(String[] args) {
13         function();
14     }
15     
16     public static void function() {
17         BigDecimal a = new BigDecimal("9.8");
18         BigDecimal b = new BigDecimal("3");
19         //计算a/b的商,调用divied方法,
20 //        BigDecimal div = a.divide(b);    //如果除不尽的话会抛出异常:java.lang.ArithmeticException。
21 //        BigDecimal div = a.divide(b,3,BigDecimal.ROUND_UP);    //保留三位小数,向上加1
22 //        BigDecimal div = a.divide(b,3,BigDecimal.ROUND_DOWN);    //保留三位小数,直接舍去
23 //        BigDecimal div = a.divide(b,3,BigDecimal.ROUND_HALF_UP);    //保留三位小数,当ROUND_HALF_UP>=0.5时,和ROUND_UP功能相同(即向上加1)。
24         BigDecimal div = a.divide(b,3,BigDecimal.ROUND_HALF_DOWN);    //保留三位小数,如果舍弃部分>0.5时,则舍入行为与ROUN_UP相同(向上加1),否则舍入行为与ROUND_DOWN相同。
25         System.out.println(div);
26     }
27 }
28 
29 
30 
31 /*
32 以上代码执行结果如下:
33 3.267
34 */

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值