Java大数模板——加法、减法、乘法、除法、开方、求余

1、BigInteger的运算

import java.math.BigInteger;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
//		String num1 = "999999999999999999999999999999";
//		String num2 = "999999999999999999999999999998";
//		BigInteger big1 = new BigInteger(num1);
//		BigInteger big2 = new BigInteger(num2);
		Scanner sc=new Scanner(System.in);
		BigInteger big1=sc.nextBigInteger();
		BigInteger big2=sc.nextBigInteger();
		System.out.println("加法操作:" + big1.add(big2));
		System.out.println("减法操作:" + big1.subtract(big2));
		System.out.println("乘法操作:" + big1.multiply(big2));
		BigInteger result[] = big1.divideAndRemainder(big2);
		System.out.println("相除后的商是:" + result[0]);
		System.out.println("相除后的余数是:" + result[1]);
	}

}

2、BigDecimal的运算

import java.math.BigDecimal;

public class Main {
	/*
	 * ROUND_HALF_UP: 遇到.5的情况时往上近似,例: 1.5 ->2 ; ROUND_HALF_DOWN:
	 * 遇到.5的情况时往下近似,例:1.5 ->;1
	 */
	public static BigDecimal add(String num1, String num2) {// 加法
		BigDecimal big1 = new BigDecimal(num1);
		BigDecimal big2 = new BigDecimal(num2);
		return big1.add(big2);
	}

	public static BigDecimal sub(String num1, String num2) {// 减法
		BigDecimal big1 = new BigDecimal(num1);
		BigDecimal big2 = new BigDecimal(num2);
		return big1.subtract(big2);
	}

	public static BigDecimal mul(String num1, String num2) {// 乘法
		BigDecimal big1 = new BigDecimal(num1);
		BigDecimal big2 = new BigDecimal(num2);
		return big1.multiply(big2);
	}

	public static BigDecimal round(BigDecimal num, int scale) {// 四舍五入,保留scale位小数
		return num.setScale(scale, BigDecimal.ROUND_HALF_DOWN);
	}

	public static BigDecimal div(String num1, String num2, int scale) {// 除法,保留scale位小数
		BigDecimal bd1 = new BigDecimal(num1);
		BigDecimal bd2 = new BigDecimal(num2);
		return bd1.divide(bd2, scale, BigDecimal.ROUND_HALF_UP);
	}

	public static int compare(String num1, String num2){//-1小于,0等于,1大于
		BigDecimal bd1 = new BigDecimal(num1);
		BigDecimal bd2 = new BigDecimal(num2);
		return bd1.compareTo(bd2);
	}
	public static BigDecimal sqrt(BigDecimal a) {//开方

		BigDecimal l = BigDecimal.ZERO, r = a, mid = a;
		BigDecimal two = new BigDecimal("2");
		BigDecimal eps = new BigDecimal(1e-120);
		while (l.compareTo(r.subtract(eps)) == -1) 
		{
			mid = l.add(r).divide(two);
			if (mid.multiply(mid).compareTo(a) == 1) 
			{
				r = mid;
			} 
			else
			{
				l = mid;
			}
		}
		return mid;
	}

	public static void main(String[] args) {
		String num1 = "12345.6789";
		String num2 = "3333.23443";
		String num3 = "123456";
		BigDecimal a = new BigDecimal(num3);
		System.out.println("加法操作:" + round(add(num1, num2), 2));
		System.out.println("减法操作:" + round(sub(num1, num2), 2));
		System.out.println("乘法操作:" + round(mul(num1, num2), 2));
		System.out.println("除法操作:" + div(num1, num2, 2));
		System.out.println("开方操作:" + sqrt(a));
		System.out.println("比较操作:" + compare(num1, num2));
	}

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值