一 大数字运算
在Java中提供了大数字的操作类,即BigInteger与BigDecimal,这两个类用于高精度计算,其中BigInteger是针对大整数的处理类,而BigDecimal则是针对大小数的处理类
1.1 BigInteger
BigInteger类型的数字范围较Integer类型的数字范围要大的多。BigInteger支持任意精度的整数,也就是说在运算中BigInteger类型可以准确的表示任何大小的整数值而不会丢失任何信息
在BigInteger类中封装了多种操作,除了基本的加、减、乘、除之外,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作
使用BigInteger类,可以实例化一个BigInteger对象,并自动调用相应的构造函数,BigInteger类有多种构造函数,如下将字符串转成BigInteger
public BigInteger(String val)
例如,将字符串2转换成BigInteger类型
BigInteger towInstance = new BigInteger("2");
一旦创建了对象实例,就可以调用BigInteger类中的一些方法进行运算操作,包括基本的数学运算和位运算以及一些取相反数、绝对值等操作。
1.1.1 BigInteger常用方法
如下,列举了BigInteger类中常用的几种运算方法
-
BigInteger add(BigInteger val):加法操作
-
BigInteger subtract(BigInteger val):减法操作
-
BigInteger multiply(BigInteger val):乘法操作
-
BigInteger devide(BigInteger val):除法操作
-
BigInteger remainder(BigInteger val):取余操作
-
BigInteger[] devideAndRemainder(BigInteger val):用数组返回余数和商,结果数组中第一个值为商,第二个值为余数
-
BigInteger pow(int exponent):进行参数exponent次方操作
-
BigInteger negate():取相反数
-
BigInteger shiftLeft(int n):将数字左移n位,如果n为负数,做右移操作
-
BigInteger shiftRight(int n):将数字右移n位,如果n为负数,做左移操作
-
BigInteger and(BigInteger val):做与操作
-
BigInteger or(BigInteger val):做或操作
-
int compareTo(BigInteger val):做数字比较操作
-
boolean equals(Object x):当参数x是BigInteger类型的数字并且数值相等时,返回true
-
BigInteger min(BigInteger val):返回最小的数值
-
BigInteger max(BigInteger val):返回最大的数值
如下面一段代码
package com.bianjf.testbignumber;
import java.math.BigInteger;
public class BigIntegerDemo {
public static void main(String[] args) {
BigInteger bigInstance = new BigInteger("4");//实例化一个大数
//该大数+2操作
System.out.println("加法操作:" + bigInstance.add(new BigInteger("2")));
//该大数-2操作
System.out.println("减法操作:" + bigInstance.subtract(new BigInteger("2")));
//该大数x2操作
System.out.println("乘法操作:" + bigInstance.multiply(new BigInteger("2")));
//该大数/2操作
System.out.println("除法操作:" + bigInstance.divide(new BigInteger("2")));
//该大数/3的商
System.out.println("取商:" + bigInstance.divideAndRemainder(new BigInteger("3"))[0]);
//该大数/3的余数