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
相关推荐
带土110 分钟前
4. C++ static关键字
开发语言·c++
毕设源码-郭学长11 分钟前
【开题答辩全过程】以 基于SSM的高校运动会管理系统的设计与实现为例,包含答辩的问题和答案
java·eclipse
qq_54702617914 分钟前
Maven 使用指南
java·maven
C++ 老炮儿的技术栈17 分钟前
什么是通信规约
开发语言·数据结构·c++·windows·算法·安全·链表
@大迁世界21 分钟前
TypeScript 的本质并非类型,而是信任
开发语言·前端·javascript·typescript·ecmascript
xiaolyuh12322 分钟前
Arthas修改类(如加日志)的实现原理
java
栗子叶26 分钟前
Java对象创建的过程
java·开发语言·jvm
Amumu1213835 分钟前
React面向组件编程
开发语言·前端·javascript
有一个好名字36 分钟前
力扣-从字符串中移除星号
java·算法·leetcode
IT=>小脑虎36 分钟前
Python零基础衔接进阶知识点【详解版】
开发语言·人工智能·python