本章目标
可以使用BigInteger操作大整数
可以使用BigDecimal指定小数的保留位数
BigInteger
如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作。
验证BigInteger
import java.math.BigInteger;
public class BigIntegerDemo01 {
public static void main(String[] args) {
BigInteger bi1 =new BigInteger("123456789");//定义 BigInteger 对象
BigInteger bi2 =new BigInteger("987654321");//定义 BigInteger 对象
System.out.println("加法操作:"+bi2.add(bi1));//加法操作
System.out.println("减法操作:"+bi2.subtract(bi1));//减法操作
System.out.println("乘法操作:"+bi2.multiply(bi1));//乘法操作
System.out.println("除法操作:"+bi2.divide(bi1));//除法操作
System.out.println("最大数:"+bi2.max(bi1));//求出最大值
System.out.println("最小数:"+bi2.min(bi1));//求出最小值
BigInteger result[] = bi2.divideAndRemainder(bi1);//除法操作
System.out.println("商是:"+result[0]+"; 余数是:"+result[1]);
}
/* 结果:
* 加法操作:1111111110
* 减法操作:864197532
* 乘法操作:121932631112635269
* 除法操作:8
* 最大数:987654321
* 最小数:123456789
* 商是:8; 余数是:9
* */
}
BigDecimal
对于不需要任何准确计算精度的程序可以直接使用float或double完成,但是如果需要精确计算的结果,则必须使用BigDecimal类。
四舍五入
import java.math.BigDecimal;
class MyMath{
public static double add(double d1, double d2){//进行加法运算
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.add(b2).doubleValue();
}
public static double sub(double d1, double d2){//进行减法运算
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.subtract(b2).doubleValue();
}
public static double mul(double d1, double d2){//进行乘法运算
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.multiply(b2).doubleValue();
}
public static double div(double d1, double d2,int len){//进行除法运算
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static double round(double d, int len){//进行四舍五入运算
BigDecimal b1 = new BigDecimal(d);
BigDecimal b2 = new BigDecimal(1);
//任何一个数字除以 1 都是原数字
//ROUND_HALF_UP 是 BigDecimal 的一个常量,表示进行四舍五入的操作
return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
public class BigDecimalDemo01 {
public static void main(String[] args) {
System.err.println("加法运算:"+MyMath.round(MyMath.add(10.345, 3.333),1));
System.err.println("乘法运算:"+MyMath.round(MyMath.mul(10.345, 3.333),3));
System.err.println("除法运算:"+MyMath.div(10.345, 3.333,3));
System.err.println("减法运算:"+MyMath.round(MyMath.sub(10.345, 3.333),3));
}
/* 结果:
* 加法运算:13.7
* 乘法运算:34.48
* 除法运算:3.104
* 减法运算:7.012
* */
}