java实现大数加、减、乘、除

输入:

import java.math.BigDecimal;

public class BigDecimalDemo {
	final int location=10; //如果没有指定商的保留位数,则默认为10
	/**
	 * 定义加法方法,参数为加数和被加数
	 * @param value1   第1个加数
	 * @param value2   第2个加数
	 * @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   第1个乘数
	 * @param value2   第2个乘数
	 * @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   除数
	 * @param value2   保留位数
	 * @return 两数之商
	 */
	public BigDecimal div(double value1,double value2){
		return div(value1, value2, location);  //第2个参数为商的小数点后的位数,第3个参数为对商进行四舍五入操作
	}
	/**
	 * 定义除法方法,参数为被除数,除数和保留位数
	 * @param value1   被除数
	 * @param value2   除数
	 * @param value2   保留位数
	 * @return 两数之商
	 */
	public BigDecimal div(double value1,double value2,int b){
		if (b<0) System.out.println("保留位数必须大于等于0");
		//实例化Decimal对象
		BigDecimal b1=new BigDecimal(Double.toString(value1));
		BigDecimal b2=new BigDecimal(Double.toString(value2));
		return b1.divide(b2,b,BigDecimal.ROUND_HALF_UP);  //第2个参数为商的小数点后的位数,第3个参数为对商进行四舍五入操作
	}
	
	public static void main(String[] args) {
		// 测试
		BigDecimalDemo b=new BigDecimalDemo(); //默认构造函数
		System.out.println("两个数相加:"+b.add(-99999999999999999999999999d, 9999999999999999999999999999d));
		System.out.println("两个数相减:"+b.sub(-99999999999999999999999999d, 9999999999999999999999999999d));
		//大整数乘法
		System.out.println("两个数相乘:"+b.mul(-99999999999999999999999999d, 9999999999999999999999999999d));
		System.out.println("两个数相除,结果保留10位小数:"+b.div(9999999999999999999999999999d, 7));
		System.out.println("两个数相除,结果保留5位小数:"+b.div(-99999999999999999999999999d, 7, 5));
	}

}

输出:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值