java中BigInteger类和BigDecimal类

目录

BigInteger类

BigInteger类位于:java.math.BigInteger包

BigInteger类表示超大整数 ,而且支持任意精度的四则运算.

**应用场景:**当int和long都不能满足需求时.

构造方法

java 复制代码
public BigInteger(String val) {
        this(val, 10);
    }

用构造方法创建对象

java 复制代码
BigInteger a = new BigInteger("字符串数字");

BigInteger的四则运算(只能是整数)

加法(add方法)

数字1.add(数字2);

java 复制代码
		BigInteger a = new BigInteger("1");
        BigInteger b = new BigInteger("2");
        BigInteger add = a.add(b);
        System.out.println(add);//3

减法(subtract方法)

数字1.subtract(数字2);

java 复制代码
		BigInteger a = new BigInteger("5");
        BigInteger b = new BigInteger("2");
        BigInteger subtract = a.subtract(b);
        System.out.println(subtract);//3

乘法(multiply方法)

数字1.multiply(数字2);

java 复制代码
		BigInteger a = new BigInteger("5");
        BigInteger b = new BigInteger("2");
        BigInteger multiply = a.multiply(b);
        System.out.println(multiply);//10

除法(divide方法)

数字1.divide(数字2);

java 复制代码
		BigInteger a = new BigInteger("5");
        BigInteger b = new BigInteger("2");
        BigInteger divide = a.divide(b);
        System.out.println(divide);//2

注意:

进行除法运算时会只去整数部分.

BigDecimal类

解决了浮点数在计算的时候精度问题.

如:

java 复制代码
System.out.println(1.0-0.32);
//0.6799999999999999

BigDecimal类是为了解决浮点数运算精度问题,它表示任意精度超大浮点数.

如果在日常开发时,如果有浮点数的运算,禁止使用float或double,由于浮点数的存储机制可能导致运算有误差.

构造方法

java 复制代码
public BigDecimal(String val) {
        this(val.toCharArray(), 0, val.length());
    }

用构造方法创建对象

java 复制代码
 BigDecimal bd = new BigDecimal("小数字符串");

BigDecimal的四则运算

加法(add方法)

浮点数1.add(浮点数2);

java 复制代码
		BigDecimal bd1 = new BigDecimal("1.23");
        BigDecimal bd2 = new BigDecimal("1.23");
        BigDecimal add = bd1.add(bd2);
        System.out.println(add);//2.46

减法(subtract方法)

浮点数1.subtract(浮点数2);

java 复制代码
		BigDecimal bd1 = new BigDecimal("2.23");
        BigDecimal bd2 = new BigDecimal("1.23");
        BigDecimal subtract = bd1.subtract(bd2);
        System.out.println(subtract);//1.00

乘法(multiply方法)

浮点数1.multiply(浮点数2);

java 复制代码
		BigDecimal bd1 = new BigDecimal("2.23");
        BigDecimal bd2 = new BigDecimal("2.2");
        BigDecimal multiply = bd1.multiply(bd2);
        System.out.println(multiply);//4.906

乘法(divide方法)

浮点数1.divide(浮点数2);

java 复制代码
		BigDecimal bd1 = new BigDecimal("4.906");
        BigDecimal bd2 = new BigDecimal("2.2");
        BigDecimal divide = bd1.divide(bd2);
        System.out.println(divide);//2.23
相关推荐
许彰午6 小时前
14_Java泛型完全指南
java·windows·python
智慧物业老杨6 小时前
司法绿色通道下的物业纠纷数智化解决方案——基于“三优先“机制的全流程技术落地实践
java·django
2601_961194026 小时前
2026初级会计实务公式总结大全|计算题公式手册PDF
java·spring·eclipse·pdf·tomcat·hibernate
做个文艺程序员6 小时前
第1篇:K8s 核心概念精讲:Pod、Deployment、Service 与 Namespace——Java 开发者快速上手指南
java·云原生·容器·kubernetes·容器编排
小欣加油9 小时前
leetcode3751 范围内总波动值I
java·数据结构·c++·算法·leetcode
代码中介商9 小时前
C++左值与右值:核心判断法则详解
开发语言·c++
闪电悠米9 小时前
黑马点评-Redisson-01_why_redisson
java·服务器·网络·数据库·缓存·wpf
星轨zb9 小时前
LangChain4j 集成 Spring Boot:会话记忆 NPE 的根源与 ChatMemoryProvider 正确配置
java·spring boot·后端·langchain4j
JAVA9659 小时前
JAVA面试-并发篇 05-并发包AQS队列实现原理是什么
java·开发语言·面试
JAVA面经实录9179 小时前
RocketMQ全套学习知识手册
java·kafka·rabbitmq·rocketmq