BigInteger 和 BigDecimal 类
常用方法
注意点:传参类型必须是 BigInteger 或者 BigDecimal 类对象
| 方法 | 功能 |
|---|---|
| add | 加 |
| subtract | 减 |
| multiply | 乘 |
| divide | 除 |
BigInteger
基本介绍
作用:适合保存比较大的整型数
构建方法
调用构造器,传入内容是数字的字符串,创建 BigInteger 对象
代码示例
java
import java.math.BigInteger;
public class main {
public static void main(String[] args) {
BigInteger bigInteger = new BigInteger("999999999999999999999999");
System.out.println(bigInteger);
BigInteger bigInteger1= new BigInteger("9");
// 加法
System.out.println("add:" + bigInteger.add(bigInteger1));
// 减法
System.out.println("subtract:" + bigInteger.subtract(bigInteger1));
// 乘法
System.out.println("multiply:" + bigInteger.multiply(bigInteger1));
// 除法
System.out.println("divide:" + bigInteger.divide(bigInteger1));
}
}
// 输出结果
999999999999999999999999
add:1000000000000000000000008
subtract:999999999999999999999990
multiply:8999999999999999999999991
divide:111111111111111111111111BigDecimal
基本介绍
作用:适合保存高精度浮点数(小数)
构建方法
调用构造器,传入内容是小数的字符串,创建 BigDecimal 对象
⚠️ 注意点
在 BigDecimal 使用除法的时候,会出现除不尽(无限循环小数)的情况,这个时候会抛出 ArithmeticException异常
解决方法
传参时候传入BigDecimal.ROUND_CEILING 参数,这个时候结果的精度就会和分子保持一致
代码示例
java
import java.math.BigDecimal;
public class main {
public static void main(String[] args) {
BigDecimal bigDecimal = new BigDecimal("99.8888888888889999999");
System.out.println(bigDecimal);
BigDecimal bigDecimal1= new BigDecimal("7");
// 加法
System.out.println("add:" + bigDecimal.add(bigDecimal1));
// 减法
System.out.println("subtract:" + bigDecimal.subtract(bigDecimal1));
// 乘法
System.out.println("multiply:" + bigDecimal.multiply(bigDecimal1));
// 除法
System.out.println("divide:" + bigDecimal.divide(bigDecimal1,BigDecimal.ROUND_CEILING));
}
}
// 输出结果
99.8888888888889999999
add:106.8888888888889999999
subtract:92.8888888888889999999
multiply:699.2222222222229999993
divide:14.2698412698412857143