我一看到这么长的数就想起了工具类中的大整数类,但是又有点不自信,觉得可能大整数类也处理不了这么长的数,于是试了一下,发现用BigInteger 和BigDecimal类都可以处理
BigInteger类 大整数 long -2的63次方 ~ 2的63次方-1 (该类型的变量存储超过long范围的整数,底层用数组存的每一位)
1.所属的包java.math 需要import导入
2.继承自Number
3.如何创建对象 提供的构造方法全部都是带参数的
通常利用带String参数的构造方法创建这个类的对象
BigInteger bi = new BigInteger("123");
4.类中的常用方法
做四则运算
add() subtract() multiply() divide() (参数和返回值的类型都是BigInteger类型)
5.小例子 设计一个方法 用来计算给定数字的阶乘 5 1*2*3*4*5==120
//设计一个方法 用来计算给定数字的阶乘
//参数 返回值
public BigInteger factorial(int num){
BigInteger result = new BigInteger("1");
for(int i=1;i<=num;i++){
result = result.multiply(new BigInteger(i+""));
}
return result;
}
BigDecimal类 超过了double取值范围(底层也是用数组存每一位)
1.所属的包 java.math包
2.继承Number类
3.通常也是可以通过 带String、int、double等等参数 构建对象
BigDecimal bi = new BigDecimal("123");
4.类中的常用方法
做四则运算
add() subtract() multiply() divide()
setScale();
两个参数 前面是保留小数点之后的位数 后面参数是设置的模式(向上取整,还是向下取整等等模式)
对象.setScale(2,BigDecimal.ROUND_DOWN);
官方文档里有很多方法,详细见官方文档
import java.util.*;
import java.math.*;
public class Main{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
BigInteger a = new BigInteger(input.next());
BigInteger b = new BigInteger(input.next());
System.out.println(a.divide(b));
}
}