当前位置: 首页 > news >正文

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);
    }

相关文章:

  • 【对比Java学Kotlin】协程-异步流
  • 基于Vue+SSM+SpringCloudAlibaba的英雄管理系统
  • 基于注意力机制的循环神经网络对 金融时间序列的应用 学习记录
  • 女篮亚军,为啥男篮那么水?
  • 发动机曲轴及曲柄连杆机构受力有限元分析
  • 进程概念(Linux)
  • 国庆弯道超车之最长递增子序列衍生的一类题
  • 30. Python 修改列表的元素
  • Redis入门-下载-安装-启动服务测试
  • 一个C#开发的、跨平台的服务器性能监控工具
  • ARM - LED灯实验(cortex A7核/cortex M4核)
  • 【云原生之Docker实战】使用Docker部署Lsky Pro个人图床平台
  • 【剑指Offer】--->详解二分查找相关练习
  • 如何使用SpringBoot里面的StopWatch统计耗时
  • 图解网络 记录
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Android 架构优化~MVP 架构改造
  • ES10 特性的完整指南
  • ES6 ...操作符
  • ES6核心特性
  • in typeof instanceof ===这些运算符有什么作用
  • javascript 总结(常用工具类的封装)
  • Javascript设计模式学习之Observer(观察者)模式
  • Laravel5.4 Queues队列学习
  • PHP变量
  • python学习笔记 - ThreadLocal
  • 彻底搞懂浏览器Event-loop
  • 对超线程几个不同角度的解释
  • 翻译:Hystrix - How To Use
  • 分布式任务队列Celery
  • 工程优化暨babel升级小记
  • 码农张的Bug人生 - 见面之礼
  • 我这样减少了26.5M Java内存!
  • 异常机制详解
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #1015 : KMP算法
  • #Linux(make工具和makefile文件以及makefile语法)
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (Forward) Music Player: From UI Proposal to Code
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (六)软件测试分工
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (四)Android布局类型(线性布局LinearLayout)
  • (五)网络优化与超参数选择--九五小庞
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NET开发者必备的11款免费工具
  • .NET文档生成工具ADB使用图文教程
  • .sh