您的位置:首页 > 编程语言 > Java开发

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

2017-08-30 19:32 1506 查看

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));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐