BigInteger与BigDecimal

BigInteger:超级大的数据运算,不能用常规的加减乘除来计算,是超过long取值范围的整数,封装成BigInteger类型的对象。

        BigInteger b1=new BigInteger("1246546489791324646473131654124564");

        BigInteger b2=new BigInteger("47974966469799464649734487431");

        b1.add(b2);//加法b1+b2

        b1.subtract(b2);//减法b1-b2

        b1.multiply(b2)//乘法b1*b2

        b1.divide(b2)//除法b1/b2

BigDecimal:超级大型的浮点数据,提供高精度的浮点运算。

        System.out.println(0.09 + 0.01);//0.09999999999999999  结果不是0.1
        System.out.println(1.0 - 0.32);//0.6799999999999999  结果不是0.68

        造成以上结果的原因是:计算机二进制中,表示浮点数不精确造成的,一般都会损失精度,所以BigDecimal类型的对象就是提供高精度的。

        BigDecimal b1=new BigDecimal("0.09");

        BigDecimal b2=new BigDecimal("0.01");

        b1.add(b2);//加法b1+b2

        b1.subtract(b2);//减法b1-b2

        b1.multiply(b2)//乘法b1*b2

        由于BigDecimal对象的数据是浮点型,会有两者相除的结果为循环小数,故由该包装类对象所提供的方法相除的方法需要自己定义保留小数的模式。

        divide(BigDecimal divisor, int scale, int roundingMode)

        int scale:保留几位小数

        int roundingMode:保留模式

        BigDecimal提供的部分常用的静态保留模式:

      static int ROUND_UP;//在保留的最后一位小数之后的数无论是多少,都向上+1(保留4位小数,4.25631结果为:4.2564)

       static int ROUND_DOWN;//在保留的最后一位小数之后的数无论是多少,都舍去(保留4位小数,4.25639结果为:4.2563)

         static int ROUND_HALF_UP;//在保留的最后一位小数之后的数,>= 0.5 向上+1,否则直接舍去(保留4位小数,0.15265结果为:0.1527)

        static int ROUND_HALF_DOWN;//在保留的最后一位小数之后的数,> 0.5 向上+1 ,否则直接舍去(保留4位小数,0.15264结果为:0.1526)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值