Contents
6.4. 大数字运算¶
6.4.1. BigInteger¶
eg
import java.math.BigInteger;
public class BigIntegerDemotest {
public static void main(String[] args) {
BigInteger bigLnstance = new BigInteger("4"); //实例化一个大数字
// 取该大数字加2的操作
System.out.println("加法操作:"+ bigLnstance.add(new BigInteger("2")));
// 取该大数字减2的操作
System.out.println("加法操作:"+ bigLnstance.subtract(new BigInteger("2")));
// 取该大数字乘以2的操作
System.out.println("乘法操作:"+ bigLnstance.multiply(new BigInteger("2")));
// 取该大数字除以2的操作
System.out.println("除法操作:"+ bigLnstance.divide(new BigInteger("2")));
// 取该大数除以3的商
System.out.println("取商:"+ bigLnstance.divideAndRemainder(new BigInteger("3"))[0]);
// 取该大数除以3的余数
System.out.println("取余数:"+ bigLnstance.divideAndRemainder(new BigInteger("3"))[1]);
// 取该大数字的2次方
System.out.println("做2次方操作:" + bigLnstance.pow(2));
// 取该大数字的相反数
System.out.println("取相反数操作:"+ bigLnstance.negate());
}
}
/*输出信息
加法操作:6
加法操作:2
乘法操作:8
除法操作:2
取商:1
取余数:1
做2次方操作:16
取相反数操作:-4
*/
6.4.2. BigDecimal¶
import java.math.BigDecimal;
public class BigDecimalDemo {
static final int location = 10;
/*
* 定义加法方法,参数为加数与被加数
* @param value1 相加第一个数
* @param value2 相加第二个数
* @return 两数之和
*/
public BigDecimal add(double value1,double value2) {
// 实例化Decimal对象
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
return b1.add(b2); //调用加法方法
}
/*
* 定义加法方法,参数为加数与被加数
* @param value1 相减第一个数
* @param value2 相减第二个数
* @return 运算结果
*/
public BigDecimal sub(double value1,double value2) {
// 实例化Decimal对象
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
return b1.subtract(b2); //调用减法方法
}
/*
* 定义乘法方法,参数为加数与被加数
* @param value1 相乘第一个数
* @param value2 相乘第二个数
* @return 运算结果
*/
public BigDecimal mul(double value1,double value2) {
// 实例化Decimal对象
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
return b1.multiply(b2); //调用乘法方法
}
/*
* 定义除法方法,参数为加数与被加数
* @param value1 被除数
* @param value2 除数
* @return 运算结果
*/
public BigDecimal div(double value1,double value2) {
return div(value1,value2,location); //调用自定义除法方法
}
public BigDecimal div(double value1,double value2,int b) {
if (b<0) {
System.out.println("b值必须大于等于0");
}
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
// 调用除法方法,商小数点后保留b位,并将结果进行四舍五入操作
return b1.divide(b2,b,BigDecimal.ROUND_HALF_UP);
}
public static void main(String[] args) {
BigDecimalDemo b = new BigDecimalDemo();
System.out.println("两个数字相加结果:"+ b.add(-7.5, 8.9));
System.out.println("两个数字相减结果:"+ b.sub(-7.5, 8.9));
System.out.println("两个数字相乘结果:"+ b.mul(-7.5, 8.9));
System.out.println("两个数字相除结果,结果保留小数后10位:"+b.div(10, 2));
System.out.println("两个数字相除,保留小数后5位:"+b.div(-7.5, 8.9,5));
}
}
/*
两个数字相加结果:1.4
两个数字相减结果:-16.4
两个数字相乘结果:-66.75
两个数字相除结果,结果保留小数后10位:5.0000000000
两个数字相除,保留小数后5位:-0.84270
*/