java中处理大数据的方法
在c和c++中,大数据往往会因为超过该类型的最大长度而导致溢出等问题,解决起来也比较麻烦(反正它们给的解决办法我是看不懂。。。。)
java为了解决该问题,有两个类BigInteger和BigDecimal 分别表示大整数类和大浮点数类,可以存储无限大的数,只要计算机内存足够大。
前两天在用到BigInteger的时候发现他的用法和int这些普通类型的用法不太一样,顺便了解了一下它常用的方法~
1.BigInteger.valueOf();
在定义一个普通类型的变量并且给他赋初值的时候,我们只需要这样:
int i = 0;
但是当你定义某个变量为BigInteger类型时,时不可以直接赋初值为0的,而是要将该值或者参数转换为指定的BigInteger类型
即:
BigInteger i = BigInteger.valueOf(0);
2.BigInteger的加减乘除等算术运算:
它的算术运算都不是用符号就可以运算,而是要调用以下方法进行运算:
BigInteger abs() 取绝对值
BigInteger add(BigInteger val) 加
BigInteger subtract(BigInteger val) 减
BigInteger multiply(BigInteger val) 乘
BigInteger divide(BigInteger val) 相除取整
BigInteger remainder(BigInteger val) 取余数
BigInteger gcd(BigInteger val) 最大公约数
BigInteger max(BigInteger val) 求最大值
BigInteger min(BigInteger val) 求最小值
BigInteger mod(BigInteger val) 用当前大整数对val求模
3.BigInteger的逻辑运算
-BigInteger negate() 求相反数
-BigInteger not() 求当前数的非
-BigInteger and(BigInteger val) 按位与
-BigInteger andNot(BigInteger val) 与非
-BigInteger or(BigInteger val) 按位或
-BigInteger xor(BigInteger val) 异或
4.BigInteger的幂
BigInteger pow(int exponent) 返回当前大整数的exponent次方
5.进制转换
String toString() 将当前大整数转换成十进制的字符串形式
//十进制的20转换成二进制
String string1 = new BigInteger(“20”, 10).toString(2);
//十进制的20转换成八进制
String string2 = new BigInteger(“20”, 10).toString(8);
6.输入
Scanner scan = new Scanner(System.in);
BigInteger big = scan.nextBigInteger();
System.out.println(big);
}