常用类库 - BigDecimal/BigInteger
用于处理任意精度的浮点数和任意长度的整数
一、BigDecimal类
BigDecimal(Java SE 11 & JDK 11)
当处理的浮点数精度超出float乃至double的限制时,可以交给BigDecimal来处理,使用BigDecimal进行运算可避免精度丢失。BigDecimal类实现了大多数的运算方法,不同于double等基本类型,在进行加减乘除等操作时,不能直接使用运算符来计算,而是要用类的各种方法来实现。
常用构造方法:
1.BigDecimal(double val)
将double转换为BigDecimal,它是 double的二进制浮点值的精确十进制表示形式。
2.BigDecimal(String val)
将字符串构造为BigDecimal浮点数。
常用方法:
1.add(BigDecimal augend)
返回此BigDecimal的值与另一个BigDecimal值的和。
2.divide(BigDecimal divisor)
返回此BigDecimal的值与另一个BigDecimal值的商(浮点数)。
3.divideAndRemainder(BigDecimal divisor)
返回BigDecimal数组,第1个值为商(整数部分),第2个值为余数。
4.doubleValue()
将BigDecimal转换为double。
5.floatValue()
将BigDecimal转换为float。
6.intValue()
将BigDecimal转换为int。
7.longValue()
将BigDecimal转换为long。
8.max(BigDecimal val)
返回两个BigDecimal的最大值。
9.min(BigDecimal val)
返回两个BigDecimal的最小值。
10.multiply(BigDecimal multiplicand)
返回此BigDecimal的值与另一个BigDecimal值的积。
11.subtract(BigDecimal subtrahend)
返回此BigDecimal的值与另一个BigDecimal值的差。
12.valueOf(double val)
将double转换为BigDecimal。
public static void main(String[] args) {
System.out.println(0.3+0.6); //0.8999999999999999,直接运算,精度丢失
BigDecimal b1 = new BigDecimal("0.3");
BigDecimal b2 = new BigDecimal("0.6");
BigDecimal b3 = b1.add(b2); //加
BigDecimal b4 = b1.subtract(b2); //减
BigDecimal b5 = b1.divide(b2); //乘
BigDecimal b6 = b1.multiply(b2); //除
System.out.println(b1); //0.3
System.out.println(b2); //0.6
System.out.println(b3); //0.9
System.out.println(b4); //-0.3
System.out.println(b5); //0.5
System.out.println(b6); //0.18
double d1 = b1.doubleValue();
System.out.println(d1); //0.3
}
二、BigInteger类
BigInteger(Java SE 11 & JDK 11)
当处理的整数超出int乃至long的处理范围时,可以交给BigInteger来处理。BigInteger类实现了大多数的运算方法,不同于int等基本类型,在进行加减乘除等操作时,不能直接使用运算符来计算,而是要用类的各种方法来实现。
常用构造方法:
1.BigInteger(String val)
将字符串构造为BigInteger整数。
常用方法:
1.add(BigInteger val)
返回此BigInteger的值与另一个BigInteger值的和。
2.divide(BigInteger val)
返回此BigInteger的值与另一个BigInteger值的商(整数部分)。
3.divideAndRemainder(BigInteger val)
返回BigInteger数组,第1个值为商(整数部分),第2个值为余数。
4.doubleValue()
将BigInteger转换为double。
5.floatValue()
将BigInteger转换为float。
6.intValue()
将BigInteger转换为int。
7.longValue()
将BigInteger转换为long。
8.max(BigInteger val)
返回两个BigInteger的最大值。
9.min(BigInteger val)
返回两个BigInteger的最小值。
10.mod(BigInteger m)
返回此BigInteger的值除以另一个BigInteger值的余数。
11.multiply(BigInteger val)
返回此BigInteger的值与另一个BigInteger值的积。
12.subtract(BigInteger val)
返回此BigInteger的值与另一个BigInteger值的差。
13.valueOf(long val)
将long转换为BigInteger。