java中的特殊数据类型–大数
大数中有两个很有用的类:BigInteger和BigDecimal,可以满足任何精度的整数或者浮点数的运算
相信c++选手一定经历过手撕高精度算法的痛苦过程,下面让我们走进大数数据类型
一、声明大数类型的手段:
1.使用静态的valueof方法,可以将普通的数值转换为大数:
1 | BigInteger a = BigInteger.valueOf(100); |
2.对于更大的数,可以使用一个带字符串参数的构造器
1 | BigInteger b = new BigInteger("1215757212121248788787")//任意长度 |
3.从键盘中读入大数类型
1 | Scanner sc = new Scanner(System.in); |
二、大数的处理不能用+,-等运算符处理。需要调用大数类的方法处理
1 | BigInteger c = a.add(b); //加 |
三、其他常用的方法
compareTo(BigInteger other);//相等返回0,如果this>other,返回负数,否则正数
equals(BigInteger other);//相等true,否则false
a.mod(b)//求余数即a%b
a.gcd(b)//求最大公约数
a.max(b)//求最大值
a.min(b)//求最小值
a.pow(b)//求a^b的大数
a.toString().length();//求大数长度
四、用大数处理阶乘,求m的阶乘
1 | import java.util.*; |