Java(六)——常用类 --- 大数运算

基本数据类型long ,double 都是有取值范围.遇到超过范围数据怎么办.引入了大数运算对象.        超过取出范围了,不能称为数字了,称为对象

java.math包 : BigInteger大整数, BigDecimal大浮点(高精度,不损失精度) 

  • BigInteger类使用,计算超大整数的

    • 构造方法直接new BigInteger(String str) 数字格式的字符串,长度任意

    • BigInteger add(BigInteger b)计算两个BigInteger的数据求和

    • BigInteger subtract(BigInteger b)计算两个BigInteger的数据求差

    • BigInteger multiply(BigInteger b)计算两个BigInteger的数据求乘积

    • BigInteger divide(BigInteger b)计算两个BigInteger的数据求商

public static void main(String[] args) {
        //创建大数据运算对象
        BigInteger b1 = new BigInteger("2345673456786554678996546754434343244568435678986");
        BigInteger b2 = new BigInteger("8765432345678987654323456787654");

        //b1+b2 求和
        BigInteger add = b1.add(b2);
        System.out.println("add = " + add);

        //b1 - b2 求差
        BigInteger subtract = b1.subtract(b2);
        System.out.println("subtract = " + subtract);

        //b1 * b2 求积
        BigInteger multiply = b1.multiply(b2);
        System.out.println("multiply = " + multiply);
        
        //b1 / b2 求商
        BigInteger divide = b1.divide(b2);
        System.out.println("divide = " + divide);
    }
  • BigDecimal 类使用,计算超大浮点数

    • 构造方法,和BigInteger一样

    • 方法 + - * 和BigInteger一样

    • BigDecimal divide除法运算

    • divide(BigDecimal big,int scalar,int round)方法有三个参数

      • big 被除数

      • scalar 保留几位

      • round 保留方式

    • 保留方式 : 该类的静态成员变量

      • BigDecimal.ROUND_UP 向上+1

      • BigDecimal.ROUND_DOWN 直接舍去

      • BigDecimal.ROUND_HALF_UP 四舍五入

public static void main(String[] args) {
    BigDecimal b1 = new BigDecimal("3.55");
    BigDecimal b2 = new BigDecimal("2.12");
    /* System.out.println(b1.add(b2));
    System.out.println(b1.subtract(b2));
    System.out.println(b1.multiply(b2));*/

    //b1 / b2
    /**
    * 1.674528301886792
    * 除不尽,出现异常
    * 高精度运算,不能产生无序循环小数,无限不循环
    * 保留几位,怎么保留
    *
    * BigDecimal.ROUND_UP  向上+1
    * BigDecimal.ROUND_DOWN 直接舍去
    * BigDecimal.ROUND_HALF_UP 四舍五入
    */
    BigDecimal divide = b1.divide(b2,3,BigDecimal.ROUND_HALF_UP);
    System.out.println("divide = " + divide);
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值