前言:
BigInteger用于处理大数据的计算,它继承自java.math.BigInteger。用法相对来说比较简单,掌握几个基本运算即可。
- 初始化: BigInteger sum=new BigInteger("0");
- 加法:sum=sum.add(n1); //这里sum和n都为BigInteger类型
- 减法:sum=sum.subtract(n1);
- 乘法:sum=sum.multiply(n1);
- 除法:sum=sum.divide(n1);
- 幂运算:sum=sum.pow(10);
- 取相反数:sum=sum.negate();
同理,BigDecimal是处理浮点数的大数据运算,继承自java.math.BigDecimal。
- 初始化: BigDecimal num1=new BigDecimal("1234.56453324");
- 加法:sum=sum.add(n1); //这里sum和n都为BigDecimal类型
- 减法:sum=sum.subtract(n1);
- 乘法:sum=sum.multiply(n1);
- 除法:sum=sum.divide(n1);
- 将BigDecimal类型转换为double类型:num1.doubleValue();
- 比较大小:num1.compareTo(num2); //小于 时,返回 -1 ; 等于 时,返回 0 ; 大于 时,返回 1 。
- 四舍五入处理: num1.divide(num2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); //scale表示保留几位小数
练习1:
BigInteger的加法运算:输入以0结尾
输入例子:
123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0
输出例子:
370370367037037036703703703670 代码如下:
import java.math.BigInteger;
import java.util.Scanner; public class Integer_Inquiry { public static void main(String[] args) {
Scanner in = new Scanner(System.in);
BigInteger sum=new BigInteger("0");
while(in.hasNext()){
String str=in.next();
if(str.equals("0")){
System.out.println(sum);
sum=new BigInteger("0");
}
BigInteger n=new BigInteger(str);
sum=sum.add(n);
}
in.close(); } }
练习2:BigDecimal加法练习:
输入描述:
对于每组案例,第1行是测试数据的组数n,每组测试数据占2行,分别是两个加数。
每组测试数据之间有一个空行,每行数据不超过100个字符
输出描述:
每组案例是n行,每组测试数据有一行输出是相应的和。
输出保证一定是一个小数部分不为0的浮点数
输入例子:
2
0.111111111111111111111111111111
0.111111111111111111111111111111 10000000.655555555555555555555555555555
1.444444444444444444444444444445
输出例子:
0.222222222222222222222222222222
10000002.1
import java.math.BigDecimal;
import java.util.Scanner; public class 浮点数加法 { public static void main(String[] args) {
Scanner in= new Scanner(System.in);
int n = in.nextInt(); while(n>0){
BigDecimal num1=new BigDecimal(in.next());
BigDecimal num2=new BigDecimal(in.next());
System.out.println(num1.add(num2).doubleValue());
n--;
// if(n>0){
// if(!in.next().equals("")){
// System.out.println("输入格式错误");
// break;
// }
// }
}
in.close(); } }