Java之BigInteger和BigDecimal

目录

一、BigInteger

1、什么是BigInteger

2、获取BigInteger的对象

3、BigInteger常用成员方法

4、 BigInteger底层存储方式

二、BigDecimal 

 1、什么是BigDecimal

2、使用BigDecimal注意事项:

3、获取BigDecimal的对象

4、BigDecimal常用成员方法

5、BigDecimal底层存储方式


一、BigInteger

1、什么是BigInteger
  1. Java的BigInteger是一个用来表示任意长度的整数的类,可以表示整数的值范围从负无穷到正无穷。
  2. BigInteger类提供了一系列的方法来支持基本的数学运算,如加、减、乘、除和取模等。它还提供了一些工具方法,如比较两个BigInteger对象的大小、转换为byte数组、字符串表示形式等。
  3. BigInteger类的对象是不可变的,即它们一旦被创建就不能被修改。这种特性使得BigInteger类非常适合用来进行精确计算,如金融、稳健算法等领域。
  4. BigInteger进行计算,会产生一个新的BigInteger对象
2、获取BigInteger的对象
public BigInteger(int num , Random rnd)    获取随机大整数,范围:【0-2^num - 1】
public BigInteger(String val)    获取指定的大整数
public BigInteger(String val , int radix)  获取指定进制的大整数
public static BigInteger valueOf(long val)  静态方法获取BigInteger的对象
// 获取一个随机的大整数(范围是0-2^4,即[0-16),取不到16)
BigInteger bi = new BigInteger(4,new Random());

// 获取一个指定的大整数
// 注:字符串中必须是整数,否则会报错
BigInteger bi = new BigInteger("100");
BigInteger bi = new BigInteger("2165465413216513165");

// 获取一个指定进制的大整数
// 注:字符串中的数字必须和进制吻合
BigInteger bi = new BigInteger("100",2);  // 二进制
BigInteger bi = new BigInteger("100",10); // 十进制

// 静态方法获取BigInteger的对象
// 细节:
//     1、能表示的范围较小,在long的取值范围之内
//     2、在内部对常用的数字(-16~16)进行了优化
//          提前把-16 ~ 16 先创建号BigInteger的对象,如果多次获取不会重新创建新的
BigInteger bi = BigInteger.valueOf(100);
3、BigInteger常用成员方法
public BigInteger add(BigInteger val)          加法
public BigInteger subtract(BigInteger val)  减法
public BigInteger multiply(BigInteger val)       乘法
public BigInteger divide(BigInteger val)              除法,获取商
public BigInteger[] divideAndRemainder(BigInteger val)     除法,获取商和余数
public booleanequals(Object x)      比较是否相同
public BigInteger pwo(int exponent)  

次幂

public BigInteger max/min(BigInteger val) 返回较大值/较小值
public int intValue(BigInteger val) 转为int类型整数,超出范围数据有误
4、 BigInteger底层存储方式

        BigInteger是通过int数组来存储大整数的。每个int元素都代表四个字节,即32位的二进制数。BigInteger中的int数组是按照从低位到高位的顺序存储的,也就是说,int数组的第一个元素存储了大整数的最低位,最后一个元素存储了大整数的最高位。因为这个原因,当我们进行加法、减法、乘法或除法等操作时,需要从低位向高位进行遍历计算。同时,因为int类型的最大值为2^31-1,所以BigInteger能够表示的最大整数位数就是2147483647 / 4 = 536870912位。 

二、BigDecimal 

 1、什么是BigDecimal

        BigDecimal是Java中的一个类,用于精确处理浮点数运算。它可以处理任意精度的数字,并且提供了一系列的算术运算方法,比如加、减、乘、除等。与常规的浮点类型(如double或float)不同,BigDecimal不会丢失精确度,因此可以用于财务和科学计算等需要高精度计算的场合。

        作用:

                1、用于小数的精确计算

                2、用来表示很大的小数

2、使用BigDecimal注意事项:
  1. 需要使用构造方法或静态方法valueOf()来创建BigDecimal对象。
  2. 通过调用BigDecimal的方法来进行算术运算,例如:add、subtract、multiply和divide方法。
  3. 使用setScale()方法可以设置BigDecimal对象的小数部分的位数。
  4. 使用compareTo()方法可以比较两个BigDecimal对象的大小。
  5. 使用toString()方法可以将BigDecimal对象转换为字符串。
3、获取BigDecimal的对象
public BigDecimal(double val) 通过传递double类型的小数获取对象(这种方式有可能不精确,不建议使用)
public BigDecimal(Stringval) 通过传递字符串表示的小数来获取对象
public static BigDecimal valueOf(double val) 通过静态方法获取对象
// 通过传递double类型的小数获取对象(这种方式有可能不精确,不建议使用)
BigDecimal bd = new BigDecimal(0.01);

// 通过传递字符串表示的小数来获取对象
BigDecimal bd = new BigDecimal("0.01");

// 通过静态方法获取对象
// 注意:数字范围如果超出了double的取值范围,不建议使用这个方法
BigDecimal bd = BigDecimal.valueOf(10);
4、BigDecimal常用成员方法
public BigDecimal add(BigDecimal val) 加法
public BigDecimal substract(BigDecimal val) 减法
public BigDecimal multiply(BigDecimal val) 乘法
public BigDecimal divide(BigDecimal val) 除法
public BigDecimal divide(BigDecimal val,精确位数,舍入模式) 除法
5、BigDecimal底层存储方式

        把数据看成字符串,遍历得到里面的每一个字符,把这些字符在ASCII码表上的值,都存储到数组中。

例如:BigDecimal bd = new BigDecimal(0.01);

           [48 , 46 , 48 , 49]

你可能感兴趣的:(Java基础,java,开发语言)