4.2 BigInteger类的概念
4.2.1 基本概念
若希望表示比long类型范围还大的整数数据,则需要借助java.math.BigInteger类型描述。
4.2.2 常用的方法
方法声明 | 功能介绍 |
---|---|
BigInteger(String val) | 根据参数指定的字符串来构造对象 |
BigInteger add(BigInteger val) | 用于实现加法运算 |
BigInteger subtract(BigInteger val) | 用于实现减法运算 |
BigInteger multiply(BigInteger val) | 用于实现乘法运算 |
BigInteger divide(BigInteger val) | 用于实现除法运算 |
BigInteger remainder(BigInteger val) | 用于实现取余运算 |
BigInteger[] divideAndRemainder(BigInteger val) | 用于实现取商和余数的运算 |
package demo01;
import java.math.BigInteger;
public class BigIntegerTest {
public static void main(String[] args) {
//1.构造对象
BigInteger bi1=new BigInteger("20");
BigInteger bi2=new BigInteger("8");
//2.实现加减乘除取余的运算
System.out.println("实现加法的运算等于:"+bi1.add(bi2)); //28
System.out.println("实现减法的运算等于:"+bi1.subtract(bi2)); //12
System.out.println("实现法乘法的运算等于:"+bi1.multiply(bi2)); //160
System.out.println("实现法除法的运算等于:"+bi1.divide(bi2)); //2 整数除整数得整数
System.out.println("实现取余得运算等于:"+bi1.remainder(bi2)); //4
//3.一次性得到商和余数
BigInteger[] arr=bi1.divideAndRemainder(bi2);
for (int i=0;i<arr.length;i++) {
System.out.println("下标为"+i+"的元素是:"+arr[i]);
}
}
}
4.3 BigDecimal类的概述
4.3.1 基本概念
由于float类型和double类型在运算时可能会有误差,若希望实现精确运算则借助java.math.BigDecimal类型加以描述。
4.3.2 常用的方法
方法声明 | 功能介绍 |
---|---|
BigDecimal(String val) | 根据参数指定的字符串来构造对象 |
BigDecimal add(BigDecimal augend) | 用于实现加法运算 |
BigDecimal subtract(BigDecimal subtrahend) | 用于实现减法运算 |
BigDecimal multiply(BigDecimal multiplicand) | 用于实现乘法运算 |
BigDecimal divide(BigDecimal divisor) | 用于实现除法运算 |
package demo01;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class BigDecimalTest {
public static void main(String[] args) {
System.out.println(0.1+0.2); //0.30000000000000004
//1.实现精确运算
BigDecimal bd1=new BigDecimal("0.1");
BigDecimal bd2=new BigDecimal("0.2");
System.out.println("精确的运算结果是:"+bd1.add(bd2)); //0.3
BigDecimal b1=new BigDecimal("5.2");
BigDecimal b2=new BigDecimal("1.3");
//2. 使用构造的对象实现加减乘除
System.out.println("实现加法的运算结果是:"+b1.add(b2)); //6.5
System.out.println("实现减法的运算结果是:"+b1.subtract(b2)); //3.9
System.out.println("实现乘法的运算结果是:"+b1.multiply(b2)); //6.76
System.out.println("实现除法的运算结果是:"+b1.divide(b2)); //4
//3.注意事项
BigDecimal b7=new BigDecimal("2");
BigDecimal b8=new BigDecimal("0.3");
System.out.println("除法的运算结果是:"+b7.divide(b8, RoundingMode.HALF_UP)); //7 余数采用了四舍五入的原则
}
}