大数操作(BigIntger、BigDecimal)

本章目标
可以使用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
 * */
}

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值