关于BigInteger:
由于计算机使用固定的位数来保存数值,因此,能处理的数值大小是有限的,当要处理的数值超过了这一范围时,计算机将会自动截断数值的二进制表示为它所能处理的最多位数,这将导致错误的处理结果。由此Java提供了BigInteger类,支持大整数的加减乘除运算。
BigInteger的头文件为java.math.BigInteger,定义数据的方式为BigInteger bigint1 = new BigInteger("大数字");BigInteger bigint2 = new BigInteger("大数字");使用BigInteger运算的时候就不能用+、-、*、/,而应使用相对应的函数,分别为:bigint1.add(bigint2)、bigint1.subtract(bigint2)、bigint1.multiply(bigint2)、bigint1.divide(bigint2);输入大数字的方法与输入一个int类型的数据相似,步骤为Scanner sc = new Scanner(System.in); BigInteger bigint = sc.nextBigInteger();比较两个大数字的大小如bigint1>=bigint2应使用BigInteger中的函数bigint1.compare(bigint2)>=0;上一节课中学到产生int类型的随机数,Random r = new Random(); int i= r.nextint();而产生BigInteger类型的大数字方法为 BigInteger bigint =new BigInteger(int numBits,Random());产生指定范围内的BigInteger类型的大数字可以使用一下方法
public static BigInteger getBigInt(BigInteger bigint)
{
BigInteger r2=new BigInteger(64,new Random());
while(r2.compareTo(bigint)>0)
{
r2=new BigInteger(64,new Random());
}
return r2;
}
但是当大数字较小的时候所需要的运行时间很长。
关于BigDecimal:
计算机进行的是二进制的运算,我们输入的十进制的数字会转化成二进制进行计算然后在转化为十进制进行输出这个过程中可能会出现一定的误差,这个时候就要用到java.math.BigDeciamal类了
定义为 BigDecimal double1 = new BigDecimal(Double.toString(1.1)); BigDecimal double1 = new BigDecimal(Double.toString(6.6)); 加减乘除的运算为double1.add(double2)、double1.subtract(double2)、double1.multiply(double2)、double1.divide(double2);
通过以上方式实现浮点数的精确计算和实现无限大整数的计算。
标签:BigInteger,Java,BigDecimal,bigint1,bigint2,实践,new,double1 From: https://www.cnblogs.com/cinan/p/16708368.html